正如您在下面的 CSS 中看到的,我希望 child2
将自身定位在 child1
之前。这是因为我目前正在开发的网站也应该在移动设备上运行,其中 child2
应该位于底部,因为它包含了我想要在移动设备上的内容下方的导航。 - 为什么不是 2 个母版页?这是在整个 HTML 中重新定位的唯一 2 个 divs
,因此这个小改动的 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
具有动态高度,因为不同的子站点可能有或多或少的导航项。
我知道绝对定位的元素已从流中删除,因此被其他元素忽略。
我尝试在父 div 上设置 overflow:hidden;
,但这没有帮助, clearfix
也没有帮助。
我最后的手段是 JavaScript 来相应地重新定位这两个 divs
,但现在我将尝试看看是否存在非 JavaScript 方法来执行此操作。
原文由 user557419 发布,翻译遵循 CC BY-SA 4.0 许可协议
您自己回答了这个问题:“我知道绝对定位的元素已从流中删除,因此被其他元素忽略。”所以你不能根据绝对定位的元素来设置父母的高度。
您要么使用固定高度,要么需要涉及 JS。
2022 年更新: 现在可以使用 CSS
flexbox
[1] 或grid
[2] 来反转父容器内 HTML 元素的视觉顺序,而不使用position: absolute;
.