问题:
在 HTML 中,应用“margin: auto” ” 元素通常在其容器内水平居中。但是,为什么它在垂直方向上的表现不一样呢?
解释:
根据 CSS 规范(CSS2.1 第 10.6.2 节),block- level 元素(例如 div)从上到下垂直定位,不自动居中。这是因为垂直边距在某些条件下可能会折叠(例如,父元素上的边框)。
在具有自动高度的容器内仅存在一个具有自动边距的块级元素的情况下,其顶部无论如何,底部边距都会变为零。然而,当存在多个块级元素或流外框(例如间隙)时,自动边距的行为变得不明确,需要手动控制。
内联元素和浮动:
对于内联元素(包括原子内联)和浮动,自动左右边距也会清零。这是因为内联级别的框沿着行框布局,并且浮动遵循独特的布局规则。
绝对定位框:
自动边距对于绝对定位的行为有所不同盒子。由于它们独立于同一定位上下文中的其他元素,因此可以使用自动顶部和底部边距垂直居中。
Flexbox:
在 Flexbox 中,自动边距行为再次不同。 Flex 项目彼此了解,包括它们的存在或不存在。这样可以更精确地控制边距行为,包括垂直居中。
以上是为什么 HTML 中的“margin: auto”元素不垂直居中?的详细内容。更多信息请关注PHP中文网其他相关文章!