我不是在寻找对中元件问题的不同解决方案;我希望您能解释一下为什么这里介绍的解决方案不起作用。
请考虑以下jsFiddle:
以下是HTML/CSS代码供参考:
HTML格式
<div class='outer'>
<div class='middle'>
<div class='inner'>
Text should be centered
</div>
</div>
</div>
CSS
.outer {
position: absolute;
left: 200px;
top: 50px;
width: 100px;
height: 100px;
border: 2px solid #00f;
border-radius: 10px;
}
.middle {
position: absolute;
left: 50%;
top: 50%;
line-height: 1em;
}
.inner {
position: relative;
left: -50%;
top: -50%;
width: 5em;
}
Chrome和Firefox的元素检查器都告诉我middle
和inner
的宽度和高度都是正确的,而且 horizontal 的定位也是正确的,但是由于某些原因,top: -50%
规则被忽略了。然而,只有当.middle
没有明确的高度时,它才被忽略--如果你添加了一个,它就可以工作了。即使有效高度和已经有的一样。为什么会这样呢?
2条答案
按热度按时间bzzcjhmw1#
这是在旧的CSS 2规范中指定的行为(强调我的):
<percentage>
偏移量是包含块的宽度(对于"left"或"right")或高度(对于"top"和"bottom")的百分比。对于"top"和"bottom",如果未显式指定包含块的高度(即,它取决于内容高度),则百分比值的解释与"auto"类似。
在当前的CSS2.1规范中,这个限制被删除了,所以我认为这是一个跨浏览器的bug。这里有一个newer bug可以用一些投票来获得更多的关注。
d6kp6zgx2#
对于那些在我之后尝试添加
display:grid;
的容器的父对我很有效