【发布时间】:2012-08-17 17:41:19
【问题描述】:
正如您在下面的 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 的方式来执行此操作。
【问题讨论】:
-
我不是 100% 确定,但我认为您可能必须采用 JS 解决方案来计算 child2 的高度并相应地移动 child1。
-
这可以通过将父位置设置为相对而子位置设置为绝对来完成。
-
看看这个Workaround也许能帮上忙。
-
如果父级是相对的,子级是绝对的,并且您希望将子级定位在底部(即父级的高度),只需使用 top:100%。
标签: html css position master-pages parent-child