兼容IE8的垂直居中

子元素不定宽高

1. 利用伪元素 inline-block & vertical-align, 该方法兼容ie8 (ie8仿真)

该方法的居中子元素display属性为inline-block

<div class="wrap">
    <div class="content">
      
    </div>
</div>
.wrap {
    text-align: center;
    width: 100%;
    height: 100px;
    background: #ccc;
}
.wrap:before {
    content: '';
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}
.wrap .content {
    display: inline-block;
    vertical-align: middle;
}

2. 通过writing-mode属性改变水平流为垂直流

居中子元素display属性为inline-block (text-align作用于内联元素)

<div class="center-box">
    <div class="center-wrap">
      <div class="center-content">
          你想要上下左右居中的内容(元素,文本或其任意组合)
      </div>
    </div>
</div>
.center-box{
    width: 200px;
    height: 200px;
    border: 1px solid #333;
    writing-mode: tb-lr;
    writing-mode: vertical-lr;
    text-align: center;
}
.center-wrap{ 
    writing-mode: lr-tb;
    writing-mode: horizontal-tb;
    text-align: center;
    width: 100%;
    display: inline-block;
}
.center-content{
    display: inline-block;
    text-align: left;
    text-align: initial;
}

居中子元素的display属性为block,设置margin: auto 0;

<div class="center-box">
    <div class="center-wrap">
        <ul class="center-content">
            <li>1</li>
            <li>1</li>
            <li>1</li>
        </ul>
    </div>
</div>
.center-box{
    width: 200px;
    height: 200px;
    border: 1px solid #333;
    writing-mode: tb-lr;
    writing-mode: vertical-lr;
    text-align: center;
}
.center-wrap{ 
    writing-mode: lr-tb;
    writing-mode: horizontal-tb;
    margin: auto 0;
}

居中子元素定高

居中子元素通过absolute定位,该方法并不是常规的设置top为50%,然后再向上移动居中元素高度的一半,而是将top bottom 设置为0 ,再通过margin: auto定位

.content {
    height: 100px;
    position: absolute;
    margin: auto;
    left: 0;
    top: 0;
    bottom: 0;
    right: 0;
}

参考:

《css世界》

https://github.com/liyongleihf2006/center-box

https://www.jianshu.com/p/71b4afe4f0a3

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值