面试常见问题——垂直居中的几种方法

来源:互联网 发布:淘宝分期付款怎么还款 编辑:程序博客网 时间:2024/06/06 19:49

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

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

结构

<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布局。

0 0