水平居中
父元素是块级盒子,已设定宽度
子元素是块级元素,没设定宽度,不存在居中
子元素是行内元素,父元素设置text-align:center
子元素是块级元素,以设定宽度:
- 通过计算父元素的padding-left或padding-right或margin-left或margin-right,设定父元素和子元素box-sizing:border-box
- 给子元素设置:margin:auto
- 用定位position,子绝父相。父元素设置绝对定位position:relative,子元素设置相对定位position:absolute;left:50%;transform:translateX(-50%)
- 弹性布局:父元素设置display:flex;flex-direction:row;justify-content:center
垂直居中
父元素是块级盒子
子元素是行内元素高度由内容撑开:
- 单行,设定父元素line-height:为自己的高度
- 多行,给父元素设置display:inline/inline-block/table-cell;vertical-align:middle
子元素是块级元素未设定高度:
- 弹性布局:父元素设置display:flex;flex-direction:column;justify-content:center
子元素是块级元素已设定高度:
- 计算子元素的margin-top或margin-bottom或padding-top或padding-bottom,设定父元素和子元素box-sizing:border-box
- 用定位position,子绝父相。父元素设置绝对定位position:relative,子元素设置相对定位position:absolute;top:50%;ltransform:translateY(-50%)
垂直和水平同时居中
- 用定位position,子绝父相。父元素设置绝对定位position:relative,子元素设置相对定位position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)
- 弹性布局:父元素设置display:flex;justify-content:center;align-items:center