← 返回博客列表

纯CSS图片垂直居中,兼容IE6/IE7

Vic.Wang2015/07/15882 阅读0 喜欢最近更新 2026/07/03 16:02:22

本文写于 2015 年,距今已有 11 年,文中提及的技术方案与接口可能已经过时,请注意甄别参考。

制作网页的时候,常常会遇到很多 logo 图标排在一起的图标墙,每个图标的位置大小是固定的,但是 logo 的大小却很不一样,有长的有短的,有宽的有高的,有很大的也有很窄的,我们为了好看需要把图标弄的一致,设计师去做当然是最完美了,但有时候这些 logo 是后台取的,是用户上传的。

这个时候就需要我们程序去控制了,可以用JS去判断宽高比动态调整,但用JS毕竟麻烦了些,能用CSS搞定当然最好了,介绍一种CSS的方法,兼容IE6/IE7哦。

示例logo如下:

vertical_center.png

效果如下:

vertical_center2.png

为了看的清楚,第二个位置加了背景色。

HTML代码:

<div class="pic-size">
    <div class="pic-wrap">
        <img src="../images/vertical_center.png">
    </div>
</div>

CSS代码:

.pic-size{
     width: 140px;
    height: 100px;
    border: 1px solid #eee;
    *position: relative;
}
.pic-wrap{
    height: 100px;
    display: table-cell;
    vertical-align: middle;
    *height: auto;
    *position: absolute;
    *top: 50%;
}
.pic-wrap img{
    float: left;
    width: 100%;
    *position: relative;
    *top: -50%;
    *display: block;
}

标准浏览器中,改变 display 的属性为 table-cell,也就是变为表格形式,然后配合 vertical-align 的垂直居中就实现了。

而 IE6/IE7 兼容的方法则是利用了定位,先将 top 的属性值设置为 50%,再在最里层 img 标签的 top 设置为-50%,就是CSS代码中的Hack部分。

这种方法对于 logo 宽度大于或略小于位置的宽度是很不错的,logo 很窄很窄那就不理想了。

若有共鸣,不妨点个喜欢

本文地址:https://www.mingsixue.com/blog/detail/CSS-image-vertical-center

分享:微博QQ空间X