Html 我可以使用CSS在视口中垂直居中固定高度的DIV吗? 我们有一个登录页面,它被设计成一个垂直于页面中间的一个高达200像素的div。也就是说,它创建了一个从左到右的200像素蓝带(其中包含表单元素),理想情况下,无论浏览器窗口的大小如何调整,该蓝带都应保持在视口的垂直中心
这必须是一个CSS解决方案 让我们假设以下是一些示例标记:Html 我可以使用CSS在视口中垂直居中固定高度的DIV吗? 我们有一个登录页面,它被设计成一个垂直于页面中间的一个高达200像素的div。也就是说,它创建了一个从左到右的200像素蓝带(其中包含表单元素),理想情况下,无论浏览器窗口的大小如何调整,该蓝带都应保持在视口的垂直中心,html,css,Html,Css,这必须是一个CSS解决方案 让我们假设以下是一些示例标记: <body> <div id="mainDiv"> <div id="centerDiv" style="height:200px;background-color:blue;color:white"> Center this baby vertically in the #mainDiv, please! </div>
<body>
<div id="mainDiv">
<div id="centerDiv" style="height:200px;background-color:blue;color:white">
Center this baby vertically in the #mainDiv, please!
</div>
</div>
</body>
即使在一个好的世界里,我们也应该能够用一些方式来解决这个问题。但引用《低俗小说》中的文·莱姆斯(Ving Rhames)的角色,我们真是太棒了!这根本不好
我查看了相关问题中提供的解决方案,并浏览了网络。我所能找到的任何东西都不能100%起作用。也许这是无法解决的,但我想我应该给这里的集体大脑这个问题,看看我是否能幸运。提前谢谢。如果你有固定的高度,你可以这样做。给子div一个50%的顶部和一个-100px的边距顶部(反之亦然),您应该被设置。要在中心进行真正的自动定位,内部
div
需要知道包含div的边界。如果您的容器没有硬边界,则内部DIV
无法自动计算其自身的位置。它根本没有参照系
我认为,使用简单的CSS解决方案,最接近的解决方案是:
#mainDiv
{
border: 1px dashed #000000;
}
#centerDiv
{
margin: 33% auto;
height: 200px;
}
如果高度未知:
}当你说“无论浏览器窗口的大小如何调整”,你的意思是,如果在加载页面后调整窗口的大小,div应该动态地重新居中吗?@RegDwight:是的,这正是我的意思。汤姆,这很有效,谢谢。事实上,我以前尝试过这个版本,但没有成功,但当我看到你的答案时,我又回头看了一遍代码,发现了一些错误,包括一个错误的“margin:auto 0”规则,它毁掉了整个过程。一旦我把它去掉,它就起作用了。多谢!这是一个很好的方法,请不要忘记添加位置:绝对代码>否则它将无法工作。
#mainDiv
{
border: 1px dashed #000000;
}
#centerDiv
{
margin: 33% auto;
height: 200px;
}
.centerdiv{
background:red;
position:absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);