垂直居中的几个写法
父元素定高
代码
<style>
.block-fix-height{
width: 500px;
height: 200px;
border: 1px solid red;
font-size: 0;
}
.block-fix-height:before{
content: '';
height: 100%;
display: inline-block;
vertical-align: middle;
}
.box1{
width: 50px;
height: 50px;
background: green;
display: inline-block;
vertical-align: middle;
}
.box2{
width: 150px;
height: 150px;
background: green;
display: inline-block;
vertical-align: middle;
}
img{
vertical-align: middle;
}
span{
font-size: 14px;
vertical-align: middle;
}
</style>
<div class="block-fix-height">
<div class="box1"></div>
<img src="images/dog.jpg" alt="">
<div class="box2"></div>
<span>this is a text</span>
</div>
表现

说明1:父元素font-size: 0是为了消除chrome带来的间距
说明2:父元素的伪类设置成inline-block,并且高度为100%
说明3:所有要居中的元素设置vertical-align: middle
父元素不定高
把上面的例子中的父元素换成
.block-no-height{
width: 500px;
border: 1px solid red;
font-size: 0;
}
这样的父元素就不需要写伪类
表现

总结
只要子元素中有跟父元素一样高度的元素,并都设置了vertical-align: middle,都可以实现居中,如果没有就要造一个。