CSS-元素居中
水平/垂直/水平垂直
flex/margin+position/table
水平居中
flex布局
1 | .parent { |
text-align
对inline inline-block inline-table inline-flex都有效,用在父元素
1 | .parent { |
对块元素,可以转为行内块,然后父元素text-align
将内部转为行内块然后外部text-align,这种方法也适用于内部多个块的情况
1 | .child { |
margin
定宽:左右margin
1 | .child { |
内容宽:table+margin
子元素设置为块级表格,再将其水平居中
display: table在表现上类似block,但宽度为内容宽
1 | .child { |
内容宽:flex+margin
1 | .parent { |
定宽:子绝父相+margin
子绝父相,子元素设置左右距离均为0,然后加上margin auto,注意一定要给子元素设定宽度否则会自动撑满
1 | .parent { |
position+(margin/transform)
主要指通过定位(子绝父相 / 子元素relative)将子元素向右移动父元素的一半,然后再向左移动自身的一半(translateX或负margin)
使用translateX无需子元素定宽,而使用负margin子元素必须定宽
translateX:子绝父相,向右移动子元素,距离为父容器的一半;再向左移动子元素的一半
1 | .parent { |
负margin:子元素relative+负margin
1 | .child { |
垂直居中
flex布局
1 | .parent { |
或者使用align-items
1 | .parent { |
table+vertical-align
1 | .parent { |
vertical-align只对inline和table-cell有效
单行inline:height=line-height
position+(margin/transform)
水平垂直居中
flex
1 | .parent { |
或者直接
1 | .parent { |
table
1 | .parent { |
position+(margin/transform)
margin
同前margin部分,如果要使用margin+子绝父相则必须要子元素定宽高,垂直方向父元素也要定高
1 | .parent { |