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

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

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

结构

<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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值