是否可以在浏览器的滚动条上覆盖 DIV?

Is it possible to overlay a DIV over the browser's scrollbar?

提问人:Nate 提问时间:2/10/2015 更新时间:7/19/2018 访问量:17841

问:

有没有办法将 DIV 覆盖在浏览器的滚动条上?

我意识到滚动条可以使用 隐藏,但我想在滚动条上实际放置一个 DIV 而不是隐藏它。overflow: none

html css (英语

评论

2赞 MattDiamant 2/10/2015
您可以隐藏滚动条,然后使用 javascript 自己创建一个滚动条,然后在其上覆盖一个。请不要这样做。您不想在滚动条上放置任何内容。div
0赞 brandito 7/20/2018
是的,使用 chrome 并希望你的错误像我一样:i.imgur.com/IHEziKK.png(它将我的滚动条置于叠加模式,但如果我在新选项卡中打开它,它是普通的滚动条。像这样:i.imgur.com/Jkbw7S8.png

答:

4赞 isherwood 2/10/2015 #1

不可以,您不能在视口之外渲染内容。但是,您可以删除浏览器的滚动条并替换自己的滚动条,从而具有更大的灵活性。

有关详细信息,请参阅此问题

评论

0赞 isherwood 8/1/2017
@manuc66,我看不出这与这个话题有什么关系。
0赞 qaisjp 2/10/2015 #2

不。除非您编写自己的滚动条实现,否则您不能这样做。

编写自己的滚动条实现的缺点包括缺乏对其他设备的测试和支持。

但是,这个库这个问题可能会有所帮助。

1赞 AaronLS 2/10/2015 #3

如果你在谷歌文档中查看一个文档,这与他们显示自己的滚动条非常相似。

如果您使用 隐藏滚动条,那么您可以在页面右侧自由创建自己的元素。您不会“覆盖”浏览器的滚动条。相反,您的滚动条将简单地位于浏览器使用隐藏它之前的相同位置。overflow:hiddenoverflow:hidden

您将投入到模拟滚动条行为的有趣挑战中,从拖动、单击页面上下区域等到移动您的内容作为响应。

评论

0赞 brandito 7/17/2018
overflow: none;?
1赞 AaronLS 7/19/2018
@Brandito危险!
0赞 brandito 7/19/2018
好多了@AaronLS
1赞 AaronLS 7/19/2018
@Brandito 是的,最初的问题问了,我没有注意到错误。overflow:none
1赞 brandito 7/20/2018
如果我负责房产价值,我会选择“无”而不是“隐藏”。
7赞 Epsil0neR 2/10/2015 #4

您可以将 div 放在滚动条上,如果该滚动不是用于元素的。这是使 div 溢出到另一个 div 的滚动条上的代码。<html>

JSFiddle

HTML格式:

<body>
    <div id="content">
        Code goes here instead of BODY
        <div class="test"></div>
    </div>
    <div class="overflow">CONTENT FOR OVERFLOW ELEMENTS</div>
</body>

CSS格式:

html, body {
    margin:0;
    padding: 0;
}
#content {
    background: lime;
    overflow: auto;
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
}

.overflow {
    position: fixed;
    right: 0;
    top: 0;
    bottom: 0;
    width: 10px;
    background: blue;
}

.test {
    background: red;
    height: 1000px;
    margin: 20px;
}

评论

0赞 Alexander O'Mara 2/10/2015
打败我!这是另一个展示这一点的小提琴
0赞 kasper Taeymans 2/10/2015 #5

不能将 div 放在文档/视口之外。但是,您可以隐藏滚动条并使用 div 或自定义滚动条代替它。

jsfiddle 演示

CSS的

#scrollbardiv{
    height:100%;
    width:12px;
    background:red;
    position:fixed;
    top:0px;
    right:0px;
}

.noscrl{
    overflow:hidden;
}
body{
    overflow:auto;
}

js

$("#toggle").on("click", function(){

  $("body").toggleClass("noscrl");

})