<!DOCTYPE html>
<html lang="en">
<head>
<title>tested html</title>
<meta charset="utf-8">
</head>
<body>
<div id="outer-div" style="height:20em;background-color:red;">
<div id="inner_div" style="height:50%;margin-top:25%;margin-bottom:25%;">This the inner-div to be centered inside outer-div</div>
</div>
</body>
</html>
已经有很多解决方案可以将div居中(垂直)在另一个div中,但我只是想知道为什么上面的inner_div不能在其父div(outer-div)中居中?
下面的图片是我认为是html渲染的结果,但实际上结果是完全不同的-外层div被内层div的边距设置压低了。所以为什么?
第1部分。崩溃的边缘。
外部div被内部div的边距设置下推。所以为什么?
这是正常的HTML呈现行为,称为折叠边距。规范摘录:
相邻的垂直边距折叠,两个边距紧接一个框的顶部边距和其第一个流入子元素的顶部边距
稍微说明一下,当您有一个父母及其第一个孩子时,其中至少有一个具有最高边距,则现有的边距中的较大者将应用于父母。(除非在某些定义明确的情况下,否则请阅读规范以了解它们是什么。)
第2部分。没有额外元素的居中。
我只是想知道为什么上面的inner_div不能在其父div(outer-div)中居中?
实际上,通过将Flexbox的两端都包含justify-content和justify-content,它实际上可以居中。
.parent {
width: 300px;
height: 200px;
background-color: Green;
display: flex;
justify-content: center;
align-items: center;
}
.child {
width: 200px;
height: 100px;
background-color: Red;
}
<div class="parent">
<div class="child"></div>
</div>
还有其他一些技术也可以达到相同的结果(通过混合表和内联显示模式),但是我不建议在本世纪使用这些技术。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句