Javascript 如何垂直对齐具有不同高度的div?

Javascript 如何垂直对齐具有不同高度的div?,javascript,html,css,Javascript,Html,Css,我在有一个弹出窗口,我需要弹出的div垂直居中。将会有更多,因为它是Tumblr,而且博客有不同的帖子,所以div的高度会有所不同。我需要它垂直居中,这样内容就会向上和向下扩展。无论如何,这是可以做到的?对于垂直对齐的div,请看这里,这可能会有所帮助 但就像@blender所说的,这并不是动态的。因此,我将在这里浏览以获得垂直对齐的div外观,这可能会有所帮助 但就像@blender所说的,这并不是动态的。因此,我将浏览哦,不使用CSS垂直居中。这很复杂,但请看这里: 如果设置为JS,只需按如

我在有一个弹出窗口,我需要弹出的div垂直居中。将会有更多,因为它是Tumblr,而且博客有不同的帖子,所以div的高度会有所不同。我需要它垂直居中,这样内容就会向上和向下扩展。无论如何,这是可以做到的?

对于垂直对齐的div,请看这里,这可能会有所帮助


但就像@blender所说的,这并不是动态的。因此,我将在这里浏览以获得垂直对齐的div外观,这可能会有所帮助


但就像@blender所说的,这并不是动态的。因此,我将浏览

哦,不使用CSS垂直居中。这很复杂,但请看这里:

如果设置为JS,只需按如下方式定位元素(输入粗糙,90%的几率它无法工作):


它不是很优雅,但可能有用。祝你好运(我会调整动画。这是一个很好的设计,但动画重叠会降低它的质量)。

哦,不,不是用CSS垂直居中。这很复杂,但请看这里:

如果设置为JS,只需按如下方式定位元素(输入粗糙,90%的几率它无法工作):


它不是很优雅,但可能有用。祝你好运(我会调整动画。这是一个很好的设计,但动画重叠会降低它的质量)。

使用以下简单HTML:

<div id="wrap">
    <div id="holder">
        <div id="modal">some<br>content<br>in<br>here</div>
    </div>
</div>
holder
modal
的顶部将在
wrap
中居中,但我们希望此动态内容的中心位于中心,因此使用一点简单的Javascript:

document.getElementById('modal').style.top = 
    "-" + document.getElementById('holder').offsetHeight/2 + "px";
…我们将
模式
向上移动
支架自动高度的一半,瞧!好了!您可以看到一个带有背景色的示例,以直观地指示此处发生的情况:


尝试更改
modal
的内容,以查看它是否可以正常工作,而不考虑其高度。

使用以下简单HTML:

<div id="wrap">
    <div id="holder">
        <div id="modal">some<br>content<br>in<br>here</div>
    </div>
</div>
var w = $(window);
$('.modal-dialog').css({
    'position': 'absolute',
    'top': Math.abs(((w.height() - $('.modal-dialog').outerHeight()) / 2) + w.scrollTop())
    //'left': Math.abs(((w.width() - $('.modal-dialog').outerWidth()) / 2) + w.scrollLeft())
});

$('html, body').animate({
    scrollTop: $('.modal-dialog').offset().top - 50
}, 500);
holder
modal
的顶部将在
wrap
中居中,但我们希望此动态内容的中心位于中心,因此使用一点简单的Javascript:

document.getElementById('modal').style.top = 
    "-" + document.getElementById('holder').offsetHeight/2 + "px";
…我们将
模式
向上移动
支架自动高度的一半,瞧!好了!您可以看到一个带有背景色的示例,以直观地指示此处发生的情况:

尝试更改
modal
的内容,以查看它是否可以正常工作,而不考虑其高度

var w = $(window);
$('.modal-dialog').css({
    'position': 'absolute',
    'top': Math.abs(((w.height() - $('.modal-dialog').outerHeight()) / 2) + w.scrollTop())
    //'left': Math.abs(((w.width() - $('.modal-dialog').outerWidth()) / 2) + w.scrollLeft())
});

$('html, body').animate({
    scrollTop: $('.modal-dialog').offset().top - 50
}, 500);
这段脚本将满足您的要求。 $('.modal dialog')-这是要垂直集中的div。 请参阅代码上的注释行。如果还希望水平集中,请取消注释

这段脚本将满足您的要求。 $('.modal dialog')-这是要垂直集中的div。
请参阅代码上的注释行。如果您还想水平集中,请取消注释。

对不起,请返回我必须编辑的链接,错误的页面lol。这样可以水平对齐。它可以工作,但对于宽度和高度已知的内容。如果它是动态的,你就不走运了。对不起,请回到我不得不编辑它的链接,错误的页面lol。这会使它水平对齐。它可以工作,但是对于宽度和高度已知的内容。如果它是动态的,你就不走运了。如果这不起作用,你可以看看这个:D谢谢,我会用它的!这只适用于固定高度的内容还是动态内容?如果这不起作用,你可以检查:D谢谢,我会使用它!这只适用于固定高度的内容还是动态的内容?查看页面,看看新问题是什么:(我觉得这可能有效,但有一些奇怪的情况。这不起作用:(()如果是一个div,则有效,但我有多个不同高度的div。查看页面,看看新问题是什么:(我觉得这可能行得通,但有点奇怪。这行不通:)如果是一个div,它就行,但我有多个不同高度的div。