【问题标题】:Fixed DIV not covered by following DIV修复了以下 DIV 未涵盖的 DIV
【发布时间】:2015-03-21 18:33:23
【问题描述】:

我的页面顶部有一个“固定”DIV:

<div id="banner-wrapper">
    <div id="banner"></div>
</div>

使用以下 CSS:

#banner-wrapper {
width:300px;
height:500px;
}
#banner {
width:300px;
height:500px;
position:fixed;
top:0;
left:0;
background:orange;
}

这个“固定”DIV 后面跟着一个“内容包装”DIV:

<div id="content-wrapper">
    <div id="content-left">
     content left
    </div>
    <div id="content-right">
     content right or sidebar
    </div>
</div>

使用以下 CSS:

#content-wrapper {
width:300px;
background:red;
position:absolute;
top:500px;
bottom:0;
}
#content-left {
width:150px;
float:left;
}
#content-right {
width:150px;
float:right;
}

我遇到的问题是“内容包装器”DIV 没有完全覆盖“固定”DIV。 “content-wrapper”的顶部覆盖了“fixed”DIV,“content-wrapper”的底部变为透明,显示下方的“fixed”DIV。

我可以通过在 CSS 中给“body”一个高度来解决这个问题。但是,我不想给“body”一个高度,因为我不知道内容的真正高度,并希望它保持灵活。我也试过插入

<div style="clear:both;"></div>

在结束标记之前,但它不会强制“内容包装器”向下。

这是关于 JSFiddle 问题的example

如您所见,“红色”框不会到达“蓝色”框,即使它设置为绝对值,底部 0。据我所知,如果它不包含任何 DIV,它会到达底部它。但是一旦我添加了“content-x”DIV,它就不再到达页面底部。

感谢您的帮助。

【问题讨论】:

  • 不清楚您要做什么。为什么任何东西都会“覆盖”一个固定的 div?
  • 我在页面顶部有一个固定的横幅。接下来的内容必须在固定 div 的顶部滚动,这样固定 div 滚动后就不会显示。

标签: html css


【解决方案1】:

您可以相对定位元素#content-wrapper,而不是绝对定位它。然后你可以省略top/bottom 定位,它会按预期运行。

它首先不起作用的原因是因为您为绝对定位的元素提供了100% 的高度。因此它将与窗口具有相同的高度,这不是您想要的。

Updated Example

更改以下内容:

#content-wrapper {
    width: 300px;
    height: 100%;
    background: red;
    position: absolute;
    top: 500px;
    bottom: 0;
}

到:

#content-wrapper {
    width: 300px;
    background: red;
    position: relative;
}

【讨论】:

  • 谢谢乔希。那成功了。一个小问题是现在页面底部有一个小间隙。它看起来像 10px 的边距出现在页脚下方。不知道为什么它在那里。这是一个例子jsfiddle.net/FormatMyBook/r8794fss/4
  • @SomeDude 这来自body 元素上的默认 8px margin。使用body { margin: 0; }.. 将其删除。更新示例 - jsfiddle.net/98fo3fqy
  • 我确实将正文设置为零填充和边距。我会仔细检查的。似乎您的 JSfiddle 版本没有那个差距,但我的版本有。我会比较一下,看看我哪里出错了。谢谢乔希。你摇滚!
猜你喜欢
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多