您的位置:首页 > Web前端 > CSS

CSS垂直居中精华总结

2016-04-29 14:13 447 查看
1 table-cell方式

将center元素的包含框display设置为table,center元素的display设置为table-cell,vertical-align设置为middle。

原理:利用表布局特点,vertical-align设置为middle后,单元格中内容中间与所在行中间对齐

.container2{

display:table;

height:100%;

}

.table_cell{/*将cell垂直居中,如果外层div不为table则tablecell必须有高度*/

display:table-cell;

vertical-align:middle;

}

优点:支持任意内容的可变高度、支持响应式

缺点:每一个需要垂直居中的元素都会需要加上额外标签(需要table、table-cell两个额外元素,也可以不用添加多余的无意义的标签,修改display的block变成了table-cell,破坏了原有的块状元素的性质。

2 使用绝对定位垂直居中

绝对对位原理:元素在过度受限情况下,将margin设置为auto,浏览器会重算margin的值,过度受限指的是同时设置top/bottom与height或者left/right与width。

.absolute_center{

/*display:none;*/

position:absolute;

width:200px;

height:200px;

top:0;

bottom:0;

left:0;

right:0;

margin:auto;

background:#518fca;

resize:both;/*用于设置了所有除overflow为visible的元素*/

overflow:auto;

}

使用绝对定位要求元素必须设置明确高度。内容超过元素高度时需要设置overflow决定滚动条的出现

优点:支持响应式,只有这种方法在resize之后仍然垂直居中

缺点:没有显式设置overflow时,内容超过元素高度时会溢出,没有滚动条

3 负marginTop方式

  已知元素高度后,使用绝对定位将top设置为50%,mergin-top设置为内容高度的一半(height + padding) / 2;内容超过元素高度时需要设置overflow决定滚动条的出现

原理:top:50%元素上边界位于包含框中点,设置负外边界使得元素垂直中心与包含框中心重合;

.negative_margin_top{

position:absolute;

top:50%;

left:0;

right:0;

margin:auto;

margin-top:-100px; /*-(height+padding)/2*/

width:200px;

height:200px;

}

优点:代码量少、浏览器兼容性高支持ie6 ie7

缺点:不支持响应式(不能使用百分比、min/max-width)

4 利用translate

这是最简单的方法,不近能实现绝对居中同样的效果,也支持联合可变高度方式使用。内容块定义transform: translate(-50%,-50%)必须带上浏览器厂商的前缀,还要加上top: 50%; left: 50%;

.is-Transformed {

width: 50%;

margin: auto;

position: absolute;

top: 50%; left: 50%;

-webkit-transform: translate(-50%,-50%);

-ms-transform: translate(-50%,-50%);

transform: translate(-50%,-50%); }

优点:

1.内容可变高度 2.代码量少

缺点:

1.IE8不支持

2.属性需要写浏览器厂商前缀

3.可能干扰其他transform效果

4.某些情形下会出现文本或元素边界渲染模糊的现象

5 弹性盒式布局

利用弹性盒式布局,将字元素的主轴、侧轴的排列方式都设置为居中对齐

原理:使用CSS弹性盒

.is-Flexbox {

display: -webkit-box;

display: -moz-box;

display: -ms-flexbox;

display: -webkit-flex;

display: flex;

-webkit-align-items: center;

align-items: center;

-webkit-justify-content: center;

justify-content: center;

}

优点:真正的垂直居中布局

缺点:ie11才开始支持弹性布局
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: