当前位置: 首页 > 知识库问答 >
问题:

使绝对定位div展开父div高度

冀崇凛
2023-03-14

正如您可以在下面的CSS中看到的,我希望子2将自己定位在子1之前。这是因为我目前正在开发的网站也应该在移动设备上工作,其中子2应该在底部,因为它包含我想要在移动设备上的内容下面的导航。-为什么不是2个主页?这是整个超文本标记语言中唯一被重新定位的两个div,所以这一微小变化的两个主页是一个过度。

超文本标记语言:

<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具有动态高度,因为不同的子网站可能有更多或更少的导航项。

我知道绝对定位元素从流中移除,因此被其他元素忽略
我尝试设置溢出:隐藏 ,但这没有帮助,clearfix

我最后的办法是用JavaScript重新定位这两个div,但现在我将尝试看看是否存在一种非JavaScript的方法来实现这一点。


共有3个答案

祁英哲
2023-03-14

有一个非常简单的方法可以解决这个问题。

你只需要在相对div中复制子1和子2的内容,显示:父div中没有。说child1_1child2_2。把child2_2放在上面,child1_1在下面。

当你的jQuery(或其他什么)调用绝对div时,只需设置相对div(child1_1或child2_2),并显示:块和可见性:隐藏。相对的孩子仍然是不可见的,但会使父母的div更高。

寿亦
2023-03-14

虽然使用位置:绝对拉伸到图元是不可能的,但通常存在一些解决方案,可以在获得相同效果的同时避免绝对定位。看看这把小提琴,它解决了你特殊情况下的问题http://jsfiddle.net/gS9q7/

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

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

最后,向父级添加一个clearfix,您就完成了(完整的解决方案见fiddle)。

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

晁英彦
2023-03-14

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

您可以使用固定高度,也可以使用JS。

 类似资料:
  • 问题内容: 如您在下面的CSS中所看到的,我想将自己定位在之前。这是因为我当前正在开发的网站也可以在移动设备上工作,该网站应该位于底部,因为它包含了我想要在移动设备内容下方显示的导航。-为什么没有2个母版页?这是在整个HTML中重新定位的仅有2个,因此,此较小更改的2个母版页是一个过大的功能。 HTML: CSS: 具有动态高度,因为不同的子站点可能具有更多或更少的导航项。 我知道绝对定位元素已从

  • 我有这样的结构,我在一个div(包装器)里面包装三个div(顶部,中部,底部): 正如您所看到的,包装器div有一个固定的高度,底部div相对于包装器div是绝对定位的。中间div有一个内容列表,我想要实现的是,使中间的div只占据顶部div和底部div之间的剩余高度,并且仍然能够滚动。我怎样才能做到这一点?

  • 问题内容: 我正在尝试给div(位置:固定)的宽度为100%(与其父div有关)。但是我有一些问题 编辑: **第一个问题是通过使用继承解决的,但它仍然无法正常工作。我认为问题在于我正在使用多个采用100%/继承宽度的div。 福克斯的例子 和html 问题似乎是 固定元素始终采用window / document的宽度 。有人知道如何解决吗? 我无法使用我的固定元素进行固定,因为我正在使用jSc

  • 问题内容: 有没有一种方法可以使div扩展到最大高度?我也有一个脚注。 这是网页: 网站已删除 。我要说的中间部分是白色div,中间内容具有CSS值: 所以是的,显然没有用。此外,所有父容器都有高度设置。 这是一般结构 问题答案: 您还记得在CSS中设置html和body标签的高度吗?通常,这就是我让DIV扩展到最大高度的方式:

  • 我有一些容器,它们的子容器仅处于绝对/相对位置。如何设置容器的高度,使其孩子在容器内? 代码如下: HTML CSS 这里有一个jsfiddle。我希望“栏”文本出现在4个方格之间,而不是它们后面。 http://jsfiddle.net/Ht9Qy/ 有简单的解决办法吗? 请注意,我不知道这些孩子的身高,也不能为容器设置身高:xxx。

  • 我有一个容器div设置了宽度和高度,溢出设置为自动。在内部,有一个无序列表,其中包含导致div滚动的内容。 问题是列表本身没有扩展到容器div之外。所以当我尝试在列表的右侧添加填充时,它并不能正常工作: CSS 这里有一把小提琴说明了问题。