jQuery:将dom元素放置在视口中心的最佳方法

jQuery:将dom元素放置在视口中心的最佳方法,jquery,html,Jquery,Html,我正在寻找一种合适的方法,将弹出div元素放置在当前视图区域的中心 例如:我们有一些div元素,带有{display:none;position:absolute}和几个按钮,一个在文档顶部,第二个在中间,最后一个在底部的某个地方。单击此按钮中的任何一个,div应显示在当前查看区域的中心 $(".btnClass").click(function(){ //some actions for positioning here $(div_id).show() }) 下面的步骤

我正在寻找一种合适的方法,将弹出div元素放置在当前视图区域的中心

例如:我们有一些div元素,带有
{display:none;position:absolute}
和几个按钮,一个在文档顶部,第二个在中间,最后一个在底部的某个地方。单击此按钮中的任何一个,div应显示在当前查看区域的中心

$(".btnClass").click(function(){
    //some actions for positioning here
    $(div_id).show()  
})

下面的步骤就可以了。虽然还有其他的方法(使用CSS,利润率,溢出等)…所以这可能不是你的问题的答案取决于你认为“最好”是什么。
您可能需要调整scrollLeft和scrollTop…我被分散了注意力,无法思考(叹气,我希望我能再次拥有我的私人办公室)。

这很好,但是如果我有一个长窗口,其中的内容在视图之外,并且我尝试将一个元素居中,那么当前视图为什么会跳转?该代码确实将一个元素定位在中心,但是滚动条会跳起来,并且由于某种原因滚动条会发生一些变化。
$(".btn_class").click(function(){
    var win = $(window),
        winW = win.width(),
        winH = win.height(),
        scrollTop = win.scrollTop(),
        scrollLeft = win.scrollLeft(),
        container = $("#div_id").css({"display":"block","visibility":"hidden"}),
        contW = container.width(),
        contH = container.height(),
        left = (winW-contW)/2+scrollLeft,
        top = (winH-contH)/2+scrollTop;

    container.css({"left":left,"top":top,"visibility":"visible"});
});