有时候我们可能需要把图像截取成固定的高,但是一般的方法都只能得到图片的上半部分或者下半部分,而这并不是我们需要的,今天分享一种用CSS使图片垂直居中显示的方法。

计算偏移量
这非常的棘手,因为我们需要图片的高度和容器的高度计算出垂直偏移量。比如图片的高度是 600px ,而容器的高度为 100px ,那么垂直偏移量为 (600 - 100)/2 = 250px ,所以我们需要把图片在垂直方向向上提 250px 。使用JavaScript来计算所有图片的偏移量显然是不切实际且消耗资源的。
我们把上面的等式推导一下,可以得到 a * 0.5 - b * 0.5 ,其中 a 是容器的高度,b 是图片的高度。
相关属性
我们需要用到两个CSS属性top 和 translate 。
toptop 属性根据容器来计算,如果我们移动图片
img { top: 50%; },则会把图片向下移动容器高德的50%。translateYtranslateY 根据对象的高度来计算,因此如果我们移动图片
img { transform: translateY(-50%); },那么则会把图片向上移动图片高度的50%。
把这两个属性组合起来就得到了我们需要的CSS。我们还需要对图片设置 position: relative; 属性,对容器设置 overflow: hidden; 属性。最终得到下面的结果:
.image-wrapper {
height: 100px;
overflow: hidden;
}
.image-wrapper img {
position: relative;
top: 50%;
transform: translateY(-50%);
}如果你没有使用 autoprefixer,我建议你使用它。这里是你需要的浏览器前缀:
-webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%);
实例
浏览器对 Transforms 的支持:
| IE | Firefox | Chrome | Safari | Android | iOS |
|---|---|---|---|---|---|
| 9+ | 3.5+ | 4+ | 3.1+ | 2.1+ | 3.2+ |
图解析-电影自媒体 2015/05/20 10:18
技术活哦
fighter 2015/06/16 22:53
网站很不错啊 前台用的什么框架啊?
Specs 2015/06/17 09:21
@ 用的Bootstrap
les 2015/09/13 20:54
东西不错啊