我怎样才能让相对 div 扩展以适应其绝对内容?
How can I get a relative div to expand to fit its absolute contents?
我更愿意只使用 CSS。
我有一个包含绝对元素的相对元素。我希望根据绝对元素的大小来调整相对元素的大小,换句话说,它应该整齐地环绕它。为了说明,在这个 fiddle 中,"footer" 位于 "header-wrapper" 下方,但它与它的内容重叠,因为 "header-wrapper" 忽略了它的绝对内容:http://jsfiddle.net/cxmjdL78/1/
HTML
<div class="wrapper">
<div class="header-wrapper">
<div class="header-1">HEADER HEADER HEADER</div>
<div class="header-2">HEADER HEADER<br>HEADER HEADER</div>
</div>
<div class="footer">this text should go below the header</div>
</div>
CSS
.wrapper {
position:relative;
width:300px;
height:300px;
}
.header-wrapper {
position:relative;
}
.header-1 {
position:absolute;
background:#232323;
width:100%;
height:auto;
opacity:0.4;
}
.header-2 {
position:absolute;
background:#323232;
width:100%;
height:auto;
opacity:0.4;
}
.footer {
position:relative;
background:#26d452;
opacity:0.4;
}
当您在元素上使用 position:absolute 时,您 "take it out of the flow"。据我所知,您无法根据绝对定位的元素获得尺寸。您必须在 header-wrapper 上设置高度,或使用 javascript 来达到效果。
为什么必须使用绝对位置?
对于 CSS 唯一的解决方案,我唯一能想到的就是为您的 header-wrapper 添加高度。如果您 div 中的内容是静态的,这将解决您的问题,但如果它是动态的,您将被迫采用某种 JavaScript 解决方案。
我更愿意只使用 CSS。
我有一个包含绝对元素的相对元素。我希望根据绝对元素的大小来调整相对元素的大小,换句话说,它应该整齐地环绕它。为了说明,在这个 fiddle 中,"footer" 位于 "header-wrapper" 下方,但它与它的内容重叠,因为 "header-wrapper" 忽略了它的绝对内容:http://jsfiddle.net/cxmjdL78/1/
HTML
<div class="wrapper">
<div class="header-wrapper">
<div class="header-1">HEADER HEADER HEADER</div>
<div class="header-2">HEADER HEADER<br>HEADER HEADER</div>
</div>
<div class="footer">this text should go below the header</div>
</div>
CSS
.wrapper {
position:relative;
width:300px;
height:300px;
}
.header-wrapper {
position:relative;
}
.header-1 {
position:absolute;
background:#232323;
width:100%;
height:auto;
opacity:0.4;
}
.header-2 {
position:absolute;
background:#323232;
width:100%;
height:auto;
opacity:0.4;
}
.footer {
position:relative;
background:#26d452;
opacity:0.4;
}
当您在元素上使用 position:absolute 时,您 "take it out of the flow"。据我所知,您无法根据绝对定位的元素获得尺寸。您必须在 header-wrapper 上设置高度,或使用 javascript 来达到效果。
为什么必须使用绝对位置?
对于 CSS 唯一的解决方案,我唯一能想到的就是为您的 header-wrapper 添加高度。如果您 div 中的内容是静态的,这将解决您的问题,但如果它是动态的,您将被迫采用某种 JavaScript 解决方案。