4

(前几天面试,被问到两次,没答好,找到这篇文章收藏学习一下 ,来自这里

做手机的页面,经常会遇到需要垂直居中的情况,这里把常用的 垂直居中的几种方法 整理下。

结构

<div class="box box1"><span>我是垂直居中元素</span></div>

方法1:dispaly:table-cell

.box1{
  text-align:center; 
  display:table-cell;
  vertical-align:middle;
}

方法2:display:flex

.box2{
  display:flex;
  justify-content:center;
  align-items:center; 
  text-align:center;
}

方法3:translate(-50%,-50%)

.box3{ position:relative;}
.box3 span{
  position:absolute; 
  left:50%; 
  top:50%; 
  -webkit-transform:translate(-50%,-50%); 
  width:100%; 
  text-align:center;
}

方法4:display:inline-block

.box4{
  text-align:center; 
  font-size:0;
}
.box4 span{
  vertical-align:middle; 
  display:inline-block; 
  font-size:16px;
}
.box4:after{
  content:'';
  width:0;
  height:100%;
  display:inline-block;
  vertical-align:middle;
}

方法5:margin:auto

.box5{ 
  display:flex; 
  text-align:center;
}
.box5 span{
  margin:auto;
}

方法6:display:-webkit-box

.box6{
  display:-webkit-box;
  -webkit-box-pack: center;
  -webkit-box-align: center; 
  text-align:center;
}

效果

整理这些实际是想尝试下不同的布局。

2,5,6实际都是flexbox的方法,flexbox兼容比较麻烦,布局可以参考ionic栅格。

3需要定位,4需要有参照物,最简单的还是table的方法。

写了一个table-布局的demo,实现方法比较简单,兼容性也比较好。

网上也已经有table的栅格系统,retchat很多组件也用了table布局。


JingDing
2.5k 声望124 粉丝

新手请多多指教~