自动调整图像大小以适应 div - 使 CSS 工作
这是一种方法,从以下 HTML 开始:
<div class="container portrait">
<h4>Portrait Style</h4>
<img src="http://placekitten.com/150/300">
</div>
和CSS:
.container {
height: 300px;
width: 240px;
background-color: red;
float: left;
overflow: hidden;
margin: 20px;
}
.container img {
display: block;
}
.portrait img {
width: 100%;
}
.landscape img {
height: 100%;
}
和演示小提琴:http: //jsfiddle.net/audetwebdesign/QEpJH/
当您将图像定向为纵向时,您需要将宽度缩放到 100%。相反,当图像是横向时,您需要缩放高度。
不幸的是,CSS 中没有针对图像纵横比的选择器组合,因此您无法使用 CSS 来选择正确的缩放比例。
此外,由于图像的左上角固定在包含块的左上角,因此您没有简单的方法使图像居中。
jQuery 助手
您可以使用以下 jQuery 操作来根据图像的纵横比确定要设置的类。
$(".container").each(function(){
// Uncomment the following if you need to make this dynamic
//var refH = $(this).height();
//var refW = $(this).width();
//var refRatio = refW/refH;
// Hard coded value...
var refRatio = 240/300;
var imgH = $(this).children("img").height();
var imgW = $(this).children("img").width();
if ( (imgW/imgH) < refRatio ) {
$(this).addClass("portrait");
} else {
$(this).addClass("landscape");
}
})
对于 中的每个图像.container
,获取高度和宽度,测试是否width<height
然后设置适当的类。
另外,我添加了一个检查以考虑包含块的纵横比。之前,我隐含地假设了一个方形视图面板。