图片垂直居中的5种css方法

图片垂直居中的css方法

今天我要介绍的是采用css进行图片居中的5个方法。首先确定我们的HTML结构(若不特别说明,下面皆采用该HTML结构)

<div class="vertical-center">
  <img src="1.jpg" alt="StarXY">
</div>

1.此方法会在img标签前加上一个inline-block的span标签,并给两个标签都设置vertical-align: middle。 HTML代码更改为:

<div class="vertical-center">
    <span></span><img src="1.jpg" alt="StarXY">
  </div>

css代码为:

body {
      font-family: "Microsoft YaHei";
      font-size: 14px;
      padding: 0;
      margin: 0;
    }

    .vertical-center {
      width: 200px;
      height: 200px;
      text-align: center;
      border: 1px solid #ff4500;
    }
    /*
      使用 .vertical-center:before会有2px的像素差,原因不明
    */
    .vertical-center span{
      display: inline-block;
      width: 0;
      height: 100%;
      font-size: 0;
      vertical-align: middle;
    }

    .vertical-center img {
      display: inline-block;
      vertical-align: middle;
    }

2.给img元素加上绝对定位,并设置margin负值。

body{
        padding: 0;
        margin: 0;
      }
      .vertical-center{
        position: relative;
        width: 200px;
        height: 200px;
        border: 1px solid #ff4500;
      }
      .vertical-center img{
        position: absolute;
        left: 50%;
        top: 50%;
        width: 160px;
        height: 160px;
        margin: -80px 0 0 -80px;
      }

3.img元素绝对定位,并设置left, right, top, bottom为0。

body{
        padding: 0;
        margin: 0;
      }
      .vertical-center{
        position: relative;
        width: 200px;
        height: 200px;
        border: 1px solid #ff4500;
      }
      .vertical-center img{
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        margin: auto;
      }

4.div类型为table-cell,并设置vertical-align: middle

body{
        padding: 0;
        margin: 0;
      }
      .vertical-center{
        display: table-cell;
        width: 200px;
        height: 200px;
        text-align: center;
        vertical-align: middle;
        border: 1px solid #ff4500;
      }

5.对img使用css3属性tranform: translate(-50%, -50%)

body{
        padding: 0;
        margin: 0;
      }
      .vertical-center{
        width: 200px;
        height: 200px;
        border: 1px solid #ff4500;
      }
      .vertical-center img{
        position: relative;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
      }

最终效果图如下:
截图

以上五种方法,性能各有优劣。第一种和最后一种性能最优,第二三四种因为采用了绝对定位或者table-cell对性能消耗较大,不建议采用。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值