【发布时间】:2012-06-14 12:47:24
【问题描述】:
我想在另一个具有overflow: scroll 的 div 内的固定顶部位置有一个全宽的小红色 div。我希望 jsFiddle 说清楚:http://jsfiddle.net/mCYLm/2/.
问题是红色 div 与滚动条重叠。我猜right: 0 表示div.wrapper 的右侧;它不会减去div.main 的滚动条。当我将overflow: scroll 移动到div.wrapper 时,红色横幅的大小正确(fiddle)。但是,它不再处于固定位置(向下滚动会使横幅向上滚动)。
我怎样才能同时实现以下两件事?
- 红色横幅位于固定位置,如this fiddle。
- 红色横幅除滚动条外全宽,如this fiddle。
我想让它在 Google Chrome 中运行。
HTML:
<div class="wrapper">
<div class="red-banner"></div>
<div class="main">
<div class="item">foo</div>
<div class="item">foo</div>
<div class="item">foo</div>
<div class="item">foo</div>
</div>
</div>
CSS:
div.wrapper {
position: relative;
}
div.main {
height: 200px;
overflow-y: scroll;
}
div.item {
border: 1px solid black;
margin: 20px;
padding: 20px;
}
div.red-banner {
background-color: red;
position: absolute;
left: 0;
top: 0;
right: 0;
height: 20px;
}
【问题讨论】:
-
为什么不把滚动的元素放在栏的下面呢?喜欢in this example。这是我认为你可以做到这一点的唯一简单方法。
-
在我的实际应用程序中,我有一个从白色到透明的渐变而不是红色,以便对滚动出容器的文本产生很好的效果。不幸的是,这种效果是不可能的,因为横幅/容器是分开的。
-
@pimvdb,我明白了,我猜你是在吃泡菜(如果你想避免 JS)。也许您可以使用 Chrome 支持的样式化 CSS 滚动条,这至少可以为您提供可以使用的固定宽度。或者也许有一些不错的 CSS3 hack。
-
您可以更改
right属性以匹配滚动条宽度...需要 JS 以确保正确测量任何滚动条.. -
@Gaby aka G. Petrioli:是的,这行得通,谢谢。不过,这并不是很令人满意。如果没有任何纯 CSS 的答案,我会继续这样做。
标签: css google-chrome overflow css-position