html - 使绝对定位的 div 扩展父 div 高度

标签 html css position master-pages parent-child

正如您在下面的 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 的方式来做到这一点。

最佳答案

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

你要么使用固定高度,要么需要 JS。

2022 年更新: 现在人们可能会使用 CSS flexbox[1] 或 grid[2] 来反转 HTML 元素内部的视觉顺序不使用 position: absolute;.

的父容器
  1. https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Aligning_Items_in_a_Flex_Container#alignment_and_flex-direction
  2. https://developer.mozilla.org/en-US/docs/Web/CSS/grid或者 Reverse order of columns in CSS Grid Layout

关于html - 使绝对定位的 div 扩展父 div 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12070759/

相关文章:

html - 列出不从父级继承样式的元素

css - 如何覆盖 Flex 4 中的 Spark 主题?

html - float div 中 hr 宽度的奇怪 IE7 错误

matlab - 5x1 的子图彼此相邻 - 为什么我总是看到前两个正在消失?

css - 当宽度未知时,水平居中图像并将其垂直放置在 div 内的底部

html - CSS 和 HTML 中的最小高度

Javascript: document.createElement ('' ) & 删除 DOMElement

html - Javascript/HTML 横幅不工作

html - HTML 文件中的 Visual Studio 代码注释

html - 如何使用 Bootstrap 将显示位置固定为 CSS3 中的所需值?