Css 根据内部元素自动调整div的高度
我有以下html:Css 根据内部元素自动调整div的高度,css,internet-explorer-8,height,Css,Internet Explorer 8,Height,我有以下html: <div class="container"> <img src="..."/> <p>Heading</p> </div> 标题 我想要这种行为: 如果没有图像(没有标签),p应该指示.container的大小 如果有图像,但p较高,则容器应与p一样高 如果图像更高,.container应该与图像一样高,p应该从.container的底部向上“增长”,具体取决于其中的文本量(如位置:绝对;位
<div class="container">
<img src="..."/>
<p>Heading</p>
</div>
标题
我想要这种行为:
- 如果没有图像(没有标签),p应该指示.container的大小
- 如果有图像,但p较高,则容器应与p一样高
- 如果图像更高,.container应该与图像一样高,p应该从.container的底部向上“增长”,具体取决于其中的文本量(如位置:绝对;位置:相对框中的底部:0)
- p应该有一个半透明的背景,这样你可以通过元素部分地看到图像。透明度不是问题,但我包含了这一点,因为我不希望有一种解决方案使p占据.container的整个高度,然后重新定位文本
- 它必须在IE8中工作(只需要浏览器)
- 如果需要的话,我可以自由地操作html结构,但我希望它尽可能简单
<div class="container">
<img src="http://lorempixel.com/100/100"/>
<p>Heading</p>
</div>
为了让IE融入到半透明的混合中,我建议您阅读。因此,我在这里看到的唯一问题是如何将p定位在图像的底部。容器始终与最高元素一样高,只要它们不浮动。“这就是你要找的吗?”罗伯特抱歉描述得不好。我已经澄清了这个问题。不完全是。如果你看代码笔,你可以看到p延伸到图像的全宽,不管它有多大。我希望最好不要在容器之外的任何东西上指定with。如果我移除img标签(容器折叠),您的解决方案也无法工作。也许这不能用纯css完成。我道歉。当我移除img标签时,您的解决方案似乎有效。我先对它做了些别的事,把它弄坏了。你知道为什么图像不能填满整个容器的高度吗?图像下方似乎有一个小的(5英寸像素)间隙。@托马斯:我怀疑小像素间隙与
p
有关,而与img
无关。我已经更新了解决这个问题的JSFIDLE。单击我的答案中的链接,您将看到更新的显示。容器中的两个元素都需要设置为底部,以便彼此对齐。
.container {
/* these are just set so we can see the size of container */
margin: 20px;
padding: 5px;
background-color: #eee;
}
.container img {
margin-right: -100px;
vertical-align: bottom;
}
.container p {
display: inline-block;
width: 100px;
background-color: rgba(0,0,0,.75);
line-height: 1em;
color: #fff;
vertical-align: bottom;
}