如何仅使用 CSS 根据其同级大小动态调整 HTML 元素的大小?



我有一个固定高度的容器。在它里面有两个子元素:图像和它下面任意长度的文本。我想让文字的高度需要和图像自动调整到剩余的空间。

下面是我的起始代码:

http://jsfiddle.net/LLsT8/1/

<div id="parent">
<div>
    <img src="http://placehold.it/250x250&amp;text=2" />
</div>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut </div>
</div>

这是JavaScript的解决方案,但我想知道它是否可以只有css。

http://jsfiddle.net/LLsT8/2/

更新:bfuoco的解决方案非常接近我需要的,但它在Firefox中不起作用。

http://jsfiddle.net/8S6Kf/1/

我建议使用display属性的tabletable-row值。

图像包装器和文本元素都是表行,因此可以展开以填充表的总面积。image-wrapper的高度被设置为100%,所以它会占用剩余的空间。

image元素嵌套在image-wrapper中,宽度/高度设置为100%,因此它的尺寸与父元素相同。

这是一把小提琴:http://jsfiddle.net/8S6Kf/1/

<div class="parent">
    <div class="image-wrapper">
        <img class="image" src="http://placehold.it/250x250&amp;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&amp);
    background-size: 100% 100%;
}

如果你想保持图像的尺寸,你可以选择使用这些背景属性:

background-size: contain;
background-repeat: no-repeat;

相关内容

  • 没有找到相关文章

最新更新