编辑:
我之前提供的使用overflow: overlay
的解决方案在像Google Chrome这样的浏览器中仍然有效,你可以在下面继续看到我的答案。然而,overflow: overlay已被标记为过时。
目前是否存在替代方案尚不清楚,但下面提到的一个解决方案仍然适用于Google Chrome。
根据我从https://github.com/w3c/csswg-drafts了解到的情况,替代方案应该是scrollbar-gutter。但实际上没有任何迹象表明有替代方案,除了一些人说可能会有。
scrollbar-gutter
的文档说明,用户代理能够控制它显示经典滚动条还是覆盖滚动条。而csswg-drafts的人们表示,似乎对实现这样一个功能的人们并不感兴趣。
如果我们想要一个替代方案,那么我们必须告诉他们,在这里:
https://github.com/w3c/csswg-drafts/issues/7716
我一个人无法提出这个建议,他们需要更多对使用“特性”来控制网站作者是否使用经典或覆盖滚动条感兴趣的人。
关于谷歌浏览器的覆盖滚动条。他们进行了一个实验,允许客户用户在chrome://flags/启用它,然后搜索“Overlay Scrollbars”。
回答:
如果你将其用于"body":
body {
overflow: overlay;
}
滚动条将在整个页面上也采用透明背景。
这样也会将滚动条放在页面内部,而不是减少一些宽度来放置滚动条。
这里是一个演示代码。我无法将其放在任何codepen或jsfiddle中,显然我花了一段时间才弄清楚,但它们不显示透明度,我不知道为什么。
但将其放入HTML文件中应该没问题。
已经成功将其放在fiddle上:
https://jsfiddle.net/3awLgj5v/
<!DOCTYPE html>
<html>
<style>
html, body {
margin: 0;
padding: 0;
}
body {
overflow: overlay;
}
.div1 {
background: grey;
margin-top: 200px;
margin-bottom: 20px;
height: 20px;
}
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
::-webkit-scrollbar-thumb {
background: rgba(90, 90, 90);
}
::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.2);
}
</style>
<body>
<div class="div1"></div>
<div class="div1"></div>
<div class="div1"></div>
<div class="div1"></div>
<div class="div1"></div>
</body>
</html>
最好的测试方法是创建一个本地的HTML文件,我猜。
你也可以将其应用于其他元素,比如任何滚动框。在使用检查器模式时,可能需要将溢出设置为隐藏,然后再设置为其他值。可能需要刷新一下。之后就可以在不必再次刷新的情况下操作滚动条了。只要注意这是针对检查器模式的。
overlay
值现在已被弃用。https://developer.mozilla.org/zh-CN/docs/Web/CSS/overflow#Values - Simon Baumgardt-Wellanderoverlay
已经被弃用了,但是没有人知道它的替代方案是什么。如果没有替代方案,为什么要将其弃用呢? - arunwithasmile