用CSS实现居中的总结
行内或者行内块元素居中
1.单行竖直居中
给行内元素添加上下相同大小的
padding
值即可
设置元素的line-height
等于父容器的高度,也可以竖直居中
使用弹性盒子Flex
后,设置align-items
为center
涉及到图片文字混排竖直居中使用vertical-align,可以使用伪元素加入以下代码
|
|
2.多行文字竖直居中
设置
padding
值仍然适用
若要使用vertical-align
属性来垂直居中,可以将父容器设置为table
,需要居中的元素display
设置为table-cell
,从而完成所需效果。
使用弹性盒子Flex
后,设置align-content
为center
3.水平居中
使用
text-align
设置为center
。
使用弹性盒子Flex
后,设置justify-content
为center
块元素居中
1.竖直居中
使用定位,若是浮动的元素需要一个多余的元素来包裹要居中的元素,需要设置
position:relative
,而后设置top:50%;
子元素设置相反方向50%,如top:-50%;
。
使用定位,若是绝对定位的元素,在宽度已知时,先绝对定位top:50%
,利用margin为负值的特性向左移动自身宽度的一半。若宽度未知,可使用transform:translateY(-50%)
实现。通用scss的mixin如下:
|
|
2.水平居中
弹性盒子的设置方法同行内元素,不在赘述
对于宽度已定的块元素直接使用margin:0 auto
属性水平居中
若宽度不确定,应该使用table
来完成布局,也设置margin:0 auto
使用定位,若是浮动的元素,需要设置position:relative
,而后设置left:50%;
子元素设置相反方向50%,如left:-50%;
。
使用定位,若是绝对定位的元素,在宽度已知时,先绝对定位left:50%
,利用margin为负值的特性向左移动自身宽度的一半。若宽度未知,可使用transform:translateX(-50%)
实现。
水平竖直同时居中的大招
1.直接上代码(兼容IE8+)
|
|
这里如果不定义元素的宽和高的话,那么他的宽就会由left,right的值来决定,高会由top,bottom的值来决定,所以必须要设置元素的高和宽。同时如果改变left,right , top , bottom的值还能让元素向某个方向偏移,大家可以自己去尝试。
2.HACK的全兼容全居中代码
IE8+、火狐谷歌等现在浏览器中可以用display:table-cell来进行居中,而font-size的方法则适用于IE6和IE7,结合这两者的代码如下:
|
|
注意vertical-align:middle
写在父元素中才行。