使绝对定位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;
并使用left
, top
和margin
属性按照您喜欢的方式将其放置在浏览器中。 然后将child2
设置为position: relative;
并设置overflow
属性为hidden
的情况下,你想填充或移动它使用父母div
left
和top
,设置height: 100%;
和width: 100%
,这应该为你工作。
上一篇: Make absolute positioned div expand parent div height
下一篇: relative positioned parent div not stretching to absolute child div height