CSS - 父div没有扩展到子的宽度/高度

时间:2012-12-23 16:38:44

标签: css html

我希望将图标叠加到图像上。我设法做到了这一点,但图片正在扩展出父div

我将div包含设置为inline-block,因为我希望它为“自动调整大小”,而不是width: 100%。如果查看当前输出,您将看到图像可能位于黑色边框内。

如果您遇到跨浏览器问题,则只需在Chrome中运行。

提前致谢!

LIVE DEMO


CSS:

#body_content {
    border: solid 1px blue;
    display: inline-block;    
    padding: 5px;
}
#body_header {
    border: solid 1px red;
    font-size: 25px;
    padding: 5px;
}
#body_image {
    position: absolute;
}
#body_image_caption {
    color: white;
    line-height: 30px;
    margin-left: 10px;
}
#body_image_container {
    background: white;
    border: solid 1px black;
    margin-top: 3px;
    padding: 10px;
}
#body_image_overlay {
    background-color: black;
    bottom: 5px;
    display: block;
    height: 30px;
    opacity: 0.85;
    position: absolute;
    width: 100%;    
}​

HTML:

<div id="body_content">
   <div id="body_header">
      Heading
   </div>
   <div id="body_image_container">
      <div id="body_image">
          <img src="http://i.imgur.com/s6G8n.jpg" width="200" height="200" />
          <div id="body_image_overlay">
             <div id="body_image_caption">
                Some Text
             </div>
          </div>
      </div>
   </div>
</div>

3 个答案:

答案 0 :(得分:20)

#body_image元素已从#body_image_container转出,因为其position设置为absolute。绝对定位的元素将从文档的流中移除,导致父元素崩溃,就像子元素不存在一样。如果您将其更改为relative,则它将包含在黑匣子中:

#body_image{
    position: relative;
}

http://jsfiddle.net/AaXTm/2/

答案 1 :(得分:7)

在父div中尝试这个css。

Overflow:auto

答案 2 :(得分:2)

检查这个小提琴。您需要将图像的子元素的位置设置为绝对,并将父元素设置为相对。相应地更改标题的宽度。

child-element {
    position:absolute;
}

parent-element {
    position:relative
}

http://jsfiddle.net/AaXTm/4/