例如,它们会导致与自动边距完全不同的行为。
看看这个小提琴:https://jsfiddle.net/L1rk46xy/
<style>
.fixed {
display:fixed;
top:0px;
left:0px;
right:0px;
bottom:0px;
}
.centered {
position:absolute;
margin:auto;
top:0;
left:0;
right:0;
bottom:0;
}
</style>
<div class="fixed">
<div class="centered" style="width:100px;height:30px;" width="200" height="30">
CENTERED
</div>
</div>
它有一个固定的元素来填充视口,里面有一些居中的文本。在我的实际网络应用程序中,这是一个加载指示器,它应该以内容为中心。为了使margin:auto工作,居中元素需要将top / right / bottom / left设置为零,并且需要具有宽度和高度。 (注意:我明确地避免使用顶部/左边的替代居中方法:50%,因为它需要大小的硬编码负半偏移,而此方法适用于任何大小的对象)。
在小提琴中注意带有文本的div元素是如何居中的。现在,删除设置宽度/高度的样式属性,并在居中的div上仅保留HTML宽度/高度属性。 div元素不再居中。
此外,如果用img替换div,则HTML宽度/高度属性足以使其居中。这里发生了什么?为什么CSS与HTML属性以及DIV和IMG标签之间存在差异?无论这些元素是块还是内联,都会发生这种情况(例如,无论如何都使用绝对定位)。