图片水平垂直居中方案

在做图片展示的时候经常遇到图片大小不定,但是需要垂直水平居中的情况,而且需要没有图片的地方需要用背景色填充。
今天根据资料总结了一下实现图片水平垂直居中的方案。
实现结果:
截图

方案一 通过line-height实现

css:

.line-height.img-panel{
    height:90px;
    line-height:88px;/*减去border宽度,如果为IE8再减去2px,原因还在研究*/
    width:160px;
    border:1px solid #cccccc;
    text-align:center;
    display:inline-block;
    vertical-align: middle;
    font-size:0px;
}
.line-height img{
    max-width:100%;/*使图片宽度不超过边界*/
    max-height:100%;/*使图片高度不超过边界*/
    vertical-align: middle;/*垂直居中必须在img上增加此属性*/
    display:inline-block;
}

html:

<div class="line-height img-panel">
    <img src="http://sandbox.runjs.cn/uploads/rs/21/tzyul8fr/middleCenter.1200.1.jpg">
</div>
<div class="line-height img-panel">
    <img src="http://sandbox.runjs.cn/uploads/rs/21/tzyul8fr/middleCenter.2341.8.jpg">
</div>
方案二 通过table-cell设置图片垂直水平居中

此方式通过div模拟table的特性来使图片居中
css:

.table-cell.img-panel{
    border:1px solid #cccccc;
    text-align:center;
    display:table;/*IE7不支持此属性*/
    float:left;
    margin-right:4px;
    font-size:0px;
    width:160px;
    height:90px;
    table-layout:fixed;/*为了使表格不被撑开*/
}
.table-cell span{
    display:table-cell;/*IE7不支持此属性*/
    vertical-align: middle;
    width:160px;
    height:90px;
}
.table-cell img{
    max-width:100%;
    max-height:100%;
}

html:需要多套一层表示table-cell

<div class="table-cell img-panel">
    <span><img src="http://sandbox.runjs.cn/uploads/rs/21/tzyul8fr/middleCenter.1200.1.jpg"></span>
</div>
<div class="table-cell img-panel">
    <span><img src="http://sandbox.runjs.cn/uploads/rs/21/tzyul8fr/middleCenter.2341.8.jpg"></span>
</div>
方案三 IE7通过img前加span设置图片垂直水平居中

老版本浏览器对line-height支持不好的,需要在图片前边添加一个标签,将标签高度设置为100%,然后让图片和该标签基于中线对齐。
css:

.ie8-pre.img-panel{
    height:90px;
    line-height:88px;
    width:160px;
    border:1px solid #cccccc;
    text-align:center;
    display:inline-block;
    margin-right:4px;
    font-size:0px;
}
.ie8-pre span{
    display:inline-block;
    vertical-align: middle;
    height:100%;
    font-size:0px;
}
.ie8-pre img{
    display:line-block;
    vertical-align: middle;
    max-width:100%;
    max-height:100%;
}

html:

<div class="ie8-pre img-panel">
    <span></span><img src="http://sandbox.runjs.cn/uploads/rs/21/tzyul8fr/middleCenter.1200.1.jpg">
</div>
<div class="ie8-pre img-panel">
    <span></span><img src="http://sandbox.runjs.cn/uploads/rs/21/tzyul8fr/middleCenter.2341.8.jpg">
</div>

demo实例

1、水平垂直居中demo

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值