使绝对定位div扩大父div高度

正如你在下面的CSS中看到的,我想让child2在child1之前定位自己。 这是因为我目前正在开发的网站也应该在移动设备上工作,其中child2应该位于底部,因为它包含我想要在移动设备上的内容之下的导航。 - 为什么不是2个主页? 这是在整个HTML中重新定位的唯一2个div,所以这个小改动的2个主页是一个矫枉过正的问题。

HTML:

<div id="parent">
    <div class="child1"></div>
    <div class="child2"></div>
</div>

CSS:

parent { position: relative; width: 100%; }
child1 { width: auto; margin-left: 160px; }
child2 { width: 145px; position: absolute; top: 0px; bottom: 0px; }

child2具有动态高度,因为不同子网站可能具有更多或更少的导航项目。

我知道绝对定位元素会从流中移除,因此被其他元素忽略。
我尝试设置overflow:hidden; 在父div上,但这并没有帮助,clearfix也没有。

我最后的手段是javascript来重新定位两个div,但现在我会试着看看是否存在一个非javascript的方法来做到这一点。


你自己回答了这个问题:“我知道绝对定位的元素会从流中移除,因此被其他元素忽略。” 所以你不能根据绝对定位的元素设置父母的身高。

您要么使用固定高度,要么需要涉及JS。


尽管伸展到position: absolute元素是不可能的,但通常有解决方案可以在获得相同效果的同时避免绝对定位。 看看这个解决问题的小提琴在你的特殊情况下http://jsfiddle.net/gS9q7/

诀窍是通过浮动两个元素来反转元素顺序,第一个到右侧,第二个到左侧,所以第二个出现在第一个。

.child1 {
    width: calc(100% - 160px);
    float: right;
}
.child2 {
    width: 145px;
    float: left;
}

最后,向父级添加一个clearfix并完成(请参阅小提琴的完整解决方案)。

通常,只要具有绝对位置的元素位于父元素的顶部,通过浮动元素就可以找到解决方法。


Feela是正确的,但你可以得到一个父div如果颠倒您的签约/扩展到一个子元素div定位。 将父div设置为position: absolute; 并使用lefttopmargin属性按照您喜欢的方式将其放置在浏览器中。 然后将child2设置为position: relative; 并设置overflow属性为hidden的情况下,你想填充或移动它使用父母div lefttop ,设置height: 100%;width: 100% ,这应该为你工作。

链接地址: http://www.djcxy.com/p/88461.html

上一篇: Make absolute positioned div expand parent div height

下一篇: relative positioned parent div not stretching to absolute child div height