我建议为此使用属性的table
和table-row
值。display
image-wrapper 和 text 元素都是表格行,因此展开以填充表格的总区域。图像包装器的高度设置为 100%,因此它会占用剩余空间。
图像元素嵌套在图像包装器中,并设置为宽度/高度 100%,因此它的尺寸与其父元素相同。
这是一个小提琴:http:
//jsfiddle.net/8S6Kf/1/
HTML
<div class="parent">
<div class="image-wrapper">
<img class="image" src="http://placehold.it/250x250&text=2" />
</div>
<div class="text">
A line of text.
</div>
</div>
CSS
.parent {
display: table;
height: 250px;
width: 250px;
}
.image-wrapper {
display: table-row;
height: 100%;
}
.image {
width: 100%;
height: 100%;
}
.text {
display: table-row;
}
更新
这不适用于 FF/IE。对于这个特殊问题,您可以将实际图像替换为 div 并使用 background-image 属性。请注意,您还必须使图像成为表格单元格;否则即不会呈现表格。
这是一个不拉伸图像的示例。
http://jsfiddle.net/8S6Kf/7/
HTML
<div class="image"></div>
CSS
.image {
display: table-cell;
height: 100%;
width: auto;
background-image: url(http://placehold.it/250x250&);
background-size: 100% 100%;
}
如果你想保留图像的尺寸,你可以选择使用这些背景属性:
background-size: contain;
background-repeat: no-repeat;