首页 >web前端 >css教程 >为什么 `margin: auto` 不绝对居中或固定位置的元素?

为什么 `margin: auto` 不绝对居中或固定位置的元素?

Patricia Arquette
Patricia Arquette原创
2024-11-10 06:06:03947浏览

Why Doesn't `margin: auto` Center Absolutely or Fixed Positioned Elements?

为什么 Margin:auto 单独无法使定位元素居中

尝试使用以下位置将 div 元素在父容器中居中时: Absolute 或position: 固定属性,单独使用margin: auto 可能不够。

理解CSS 规范

根据CSS 规范,对于position 的元素:相对或位置:静态(正常流程),将 margin-left 和 margin-right 设置为自动将元素相对于其包含块水平居中,因为它们的使用值变得相等。但是,这不适用于position:absolute或position:fixed的元素。

对于绝对或固定定位的元素,其中left、width、right三者均为auto,则使用margin-left的值和 margin-right 设置为 0 以防止居中。要使这些元素居中,必须定义左、右或宽度的值。

设置左、右和宽度的效果

如果左、右,和宽度都已定义,边距得到相等的值,从而导致居中。省略任何这些值都会导致元素偏离中心对齐。

不同情况的演示

下表演示了各种情况,如 CSS 中所述规格:

Margin Setting Centring
margin-left: auto; margin-right: auto Yes (flow element)
margin-left: auto; margin-right: auto No (absolute/fixed element)
left: auto; right: auto; width: auto No (margin set to 0)
left: 0; right: 0; width: auto No (margin set to 0)
right: auto; left: auto; No (margin set to 0)
left: auto; right: auto; width: 200px Yes (equal margins)
left: 0; width: auto Yes (equal margins)
right: 0; width: auto Yes (equal margins)

以上是为什么 `margin: auto` 不绝对居中或固定位置的元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn