我正在使用flexbox将DIV居中放置在另一个DIV中。想一想需要时会在屏幕中央弹出的对话窗口。
它可以正常工作,但是如果对话框上方和下方的空间不完全相等,则剩余空间的40%会位于对话框上方和60%的下方,这样看起来会好得多。之所以变得棘手,是因为对话框的高度随内部文本的数量而变化。
因此,例如,如果浏览器高度为1000像素,对话框窗口高度为400像素,我希望剩余的垂直空间(600像素)为对话框上方240像素和对话框下方360像素。我可以用Javascript来做,但是我很好奇CSS是否有一些巧妙的方法。我尝试在#dialogBox DIV中添加底部边距,但是当对话框高度接近浏览器高度时,此方法不起作用。
#dialogBoxPanel
{
position:absolute;
display:flex;
align-items:center;
justify-content:center;
left:0px;
top:0px;
width:100%;
height:100%;
}
#dialogBox
{
width:350px;
}
<div id="dialogBoxPanel">
<div id="dialogBox">Text</div>
</div>
您是否需要外部面板覆盖整个视口?如果没有,我将使用css-tricks.com/centering-css-complete-guide中的解决方案,“水平和垂直方向上的元素/宽度和高度未知吗?”部分,并修改转换百分比值。(即使您确实需要父级完整的视口大小[背景?],您也应该能够将两者结合在一起-取消flex的东西,休息吧。)
—
04FS
是的,我在外部面板上具有调光效果,因此它需要覆盖整个视口。但是我可以在其中添加另一个DIV,您的解决方案将可以正常工作。谢谢04FS!
—
比约恩·莫伦(BjörnMorén)
为了准确起见,您在谈论的是垂直对齐,而不是居中。
—
Michael Benjamin