如果容器中有固定高度,则可以将 line-height 设置为与 height 相同,并且它将垂直居中。然后只需将 text-align 添加到水平居中即可。
这是一个例子:http: //jsfiddle.net/Cthulhu/QHEnL/1/
编辑
您的代码应如下所示:
.img_thumb {
float: left;
height: 120px;
margin-bottom: 5px;
margin-left: 9px;
position: relative;
width: 147px;
background-color: rgba(0, 0, 0, 0.5);
border-radius: 3px;
line-height:120px;
text-align:center;
}
.img_thumb img {
vertical-align: middle;
}
无论图像大小如何,图像都将始终水平和垂直居中。这里还有 2 个不同尺寸图像的示例:
http://jsfiddle.net/Cthulhu/QHEnL/6/
http://jsfiddle.net/Cthulhu/QHEnL/7/
更新
现在是 2016 年(未来!),看起来有些事情正在发生变化(终于!!)。
早在 2014 年,微软就宣布将停止在所有版本的 Windows 中支持 IE8,并鼓励所有用户更新到 IE11 或 Edge。好吧,这应该在下周二(1 月 12 日)发生。
为什么这很重要?随着IE8 的宣布死亡,我们终于可以开始使用CSS3魔法了。
话虽如此,这是一种水平和垂直对齐元素的更新方法:
.container {
position: relative;
}
.container .element {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
使用这种transform: translate();
方法,您甚至不需要在容器中设置固定高度,它是完全动态的。你的元素有固定的高度或宽度?你的容器也是?不?没关系,它将始终居中,因为所有居中属性都固定在孩子身上,它独立于父母。谢谢CSS3。
如果只需要在一维上居中,可以使用translateY
或translateX
。试一试,你就会知道它是如何工作的。此外,尝试更改 的值translate
,您会发现它对许多不同的情况很有用。
在这里,有一个新的小提琴:https ://jsfiddle.net/Cthulhu/1xjbhsr4/
有关 的更多信息transform
,这里有一个很好的资源。
快乐编码。