参考文章:margin: auto 的魔法世界、CSS元素宽度、继承父元素宽度、cale函数计算宽度总结
- 元素是块元素、固定宽度、水平方向的时候,可以设置
margin:auto;
实现水平居中。 - 面对垂直方向或者多元素的场景,以上三个条件不满足,那么可不可以设置子元素是
inline-block
呢?答案是不可以的。我们可以使用flex
搭配完成
flex
布局的垂直和水平居中,同样可以使用margin
的auto
属性完成。
注意:当flex布局使用justify-content:space-evenly;
的时候,子元素设置不伸缩且宽度超过父元素的时候,会出现第一个子元素显示不全的bug
,可以使用margin
的auto
属性解决。具体参考margin: auto 的魔法世界
补充:
- 块级元素固定宽度的情况下,可以使用margin的auto属性进行水平居中,但是垂直居中不行。
- 行内块元素不能使用auto属性,auto默认为0。
- 行内元素可以设置左右内外边距。但是设置上下内外