首先附带HTML代码
<div class="box box1 box2 box3 box4 box5 box7 box8 box9"> <div>垂直居中</div> </div>
接着附带box为公共样式
.box{ 200px; height: 200px; background: pink; }
第一种方法box1:display: table-cell;
兼容ie8及以上。适用于文字与图片
css代码如下:
.box1{ display: table-cell; vertical-align: middle; text-align: center; }
第二种方法box2:display: flex;
兼容ie10及以上。适用于文字与图片
css代码如下:
.box2{ display: flex; justify-content:center; align-items:Center; }
第三种方法box3:绝对定位和负边距;
兼容ie6及以上。适用于文字与图片
但是需要注意的是,需要设置准备的宽高,并且使用的负边距为宽高的一半
css代码如下:
.box3{ position:relative; } .box3 img{ position: absolute; 100px; height: 50px; top:50%; left:50%; margin-left:-50px; margin-top:-25px; text-align: center; }
第四种方法box4:绝对定位与margin;
兼容ie8及以上。适用于文字与图片
关键在于margin与子绝父相
css代码如下:
.box4{ position: relative; } .box4 img{ 50%; height: 50%; background: #000; overflow: auto; margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0; }
第五种方法box5:绝对定位与transform;
兼容ie9及以上。适用于文字与图片
ie8不支持transform,所以会出现兼容性问题
css代码如下:
.box5{ position:relative; } .box5 img{ 50%; height: 50%; position: absolute; top:50%; left:50%; transform:translate(-50%,-50%); text-align: center; }
第六种方法box6:伪元素;
兼容ie8及以上。适用于文字与图片
一直对伪元素了解不够深,之后会对做更加透彻的分析,所以并不打算多做解释
css代码如下:
.box7{ text-align:center; } .box7 img{ vertical-align:middle; display:inline-block; } .box7:after{ content:''; 0; height:100%; display:inline-block; vertical-align:middle; }
第七种方法box7:弹性盒方法;
不兼容所有ie浏览器
适用于文字与图片。也是我最喜欢的一种方法。但是对ie浏览器并不友好。更推荐在手机端使用
css代码如下:
.box8{ display: flex; text-align: center; } .box8 img{ margin: auto; }
第八种方法box8:display: -webkit-box;;
同样适用于手机端,ie端全部爆炸
css代码如下:
.box9{ display: -webkit-box; -webkit-box-pack:center; -webkit-box-align:center; -webkit-box-orient: vertical; text-align: center }
原文链接:http://www.jiangweishan.com/article/duiqi213124124124.html