您可以通过多种方式实现它,但我不能在不知道上下文的情况下成为“语义”(图像是页面的主要/唯一内容吗?它在博客文章的中间吗?),所以我会去div
。
1. position:absolute;
+margin:auto;
支持:跨浏览器
HTML
<html>
<body>
<div id="container">
<img src="your-image.jpg">
</div>
</body>
</html>
CSS
html,body,#container {
height:100%;
}
#container {
width:100%;
position:relative;
}
#container > img {
width:100%;
max-width:400px; /* real image width */
position:absolute;
top:0; left:0; right:0; bottom:0;
margin:auto;
}
演示
2. display:table;
+ display:table-cell;
+vertical-align:middle;
支持: IE8+, 所有其他浏览器 - 带有 IE7 后备 ( Source 1 ) ( 2 ) ( 3 )
HTML
<html>
<body>
<div id="container">
<span> /* it's important that you use a span here
not a div, or the IE7 fallback won't work */
<img src="your-image.jpg">
</span>
</div>
</body>
</html>
CSS
html,body,#container {
height:100%;
}
#container {
width:100%;
display:table;
*display:block; /* IE7 */
}
#container > span {
display:table-cell;
*display:inline-block; /* IE7 */
vertical-align:middle;
text-align:center;
}
#container > span > img {
width:100%;
max-width:400px; /* real image width */
}
演示
3.background-size:contain;
支持:IE9+,所有其他浏览器 - 带有供应商前缀(来源 1)(2)
HTML
<html>
<body>
<div id="container"></div>
</body>
</html>
CSS
html,body,#container {
height:100%;
}
#container {
margin:0 auto;
max-width:400px; /* real image width */
background:url(your-image.jpg) 50% 50% no-repeat;
background-size:contain;
}
演示
注意 IE8 的渲染方式height:auto;
,可能不会保持比例。
编辑:我刚刚意识到你写的是“没有调整图像的纵横比”。如果你真的不想保持这个比例,那就更容易了……但你真的是那个意思吗?