使主滚动条始终可见


Answers:


332
html {
    overflow: -moz-scrollbars-vertical; 
    overflow-y: scroll;
}

这使滚动条始终可见,并且仅在需要时才处于活动状态。

更新:如果上述方法不起作用,则仅使用此方法即可。

html {
    overflow-y:scroll;
}

3
您是否知道FF的支持版本overflow-y?似乎-moz-scrollbars-vertical已弃用该overflow-y属性。
Ionuț G. Stan,2009年

如果我没记错的话,我认为是Internet Explorer 6.x +,Firefox 1.5+。我一直在使用上面的代码,对我来说,它在FF1.5-3.5.1和IE6-8中有效。
Corv1nus

2
如果您网站上的某些页面太小而没有滚动条,而其他页面太小,是否有“跳页”的替代方法?还是这是“最佳实践”?我必须承认,我看不到网络上没有占据整页的页面。
杰西

2
我不确定这是否是最佳实践,但是在所有页面上都具有滚动条,并且仅在必要时才处于活动状态,这样通常可以避免页面跳转。我倾向于使用恒定滚动条而不是跳转。
Corv1nus

1
对于那些发现样式html有点怪异的人(如我),请注意,您可以使用结构化伪选择器:root代替html。请参阅:developer.mozilla.org/en-US/docs/Web/CSS/
root

30

确保将溢出设置为“滚动”而不是“自动”。话虽如此,在OS X Lion中,设置为“ scroll”的溢出行为更像auto,因为滚动条仍仅在使用时显示。因此,如果上述任何解决方案似乎都不起作用,那可能就是原因。

这是您需要解决的问题:

::-webkit-scrollbar {
  -webkit-appearance: none;
  width: 7px;
}
::-webkit-scrollbar-thumb {
  border-radius: 4px;
  background-color: rgba(0, 0, 0, .5);
  -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
}

如果您不喜欢默认样式,则可以相应地设置样式。


1
这东西行得通!但是,如何仅在特定的div上做到这一点?
丰富

@Rich就像其他任何CSS元素一样。.yourdiv ::-webkit-scrollbar {...}
Kris,

@Kris Hi,谢谢您的回答,这里是示例。stackoverflow.com/a/54667091/2637261
丰富

为什么使用它-webkit-appearance: none;
Suraj Jain

这很棒!应该是公认的答案。
Cyber​​punker

25

过去几年,情况发生了变化。以上答案在所有情况下都不再有效。苹果正在各地推销消失的滚动条。MacO(和iO)上的Safari,Chrome甚至Firefox仅在实际滚动时显示滚动条-我不知道当前的Windows / IE。但是,在Webkit上有一些非标准的样式来设置滚动条的样式(很久以前IE就已删除)。


但是它会优雅地降级到那些新的?
2014年

3
感谢消失的滚动条上的这一点。对我来说,使滚动条保持可见的原因是,避免了内容从滚动到不滚动时的轻微但非常明显和令人讨厌的混蛋。随着滚动条的消失,他们在显示和隐藏时不会晃动身体,所以对我来说还可以。但是,感谢您的出色观点。
Noitidart

4
从UX的角度来看,大多数情况下,我们希望滚动条可见。根据当前趋势,如果滚动条不可见,则必须“尝试”一个可见列表以获取列表中的更多内容,这是另外的步骤。如果人们看到滚动条,则不需要其他视觉线索,即下拉列表或列表中包含更多项。
windsurf88 2013年

24
html {
    overflow-y: scroll;
}

那是你要的吗?

不幸的是,Opera 9.64在应用于HTML或时似乎忽略了该CSS声明BODY,尽管它适用于其他块级元素,例如DIV


13
html {height: 101%;}

我使用此跨浏览器解决方案 (请注意:我总是在第一行中使用DOCTYPE声明,我不知道它是否在quirksmode下工作,从未测试过)。

这将始终在每个页面中显示一个活动的垂直滚动条,垂直滚动条只能滚动几个像素。

当页面内容于浏览器的可见区域(查看端口)时,您仍将看到垂直滚动条处于活动状态,并且只能滚动几个像素。

如果您通过使用此解决方案而对CSS验证感到迷惑(我仅对HTML验证很执迷),那么您的CSS代码也将针对W3C进行验证,因为您未使用非标准CSS属性,例如 -moz-scrollbars-vertical


1
优雅的解决方案
Artur Keyan

12

body { height:101%; } 将“裁剪”较大的页面。

相反,我使用:

body { min-height:101%; }

1
这个问题是5年前提出的,已经有了公认的答案。您的答案没有比已经接受的答案更好的答案。
Dipen Shah 2015年

18
该答案实际上确实提供了其他答案中未提供的其他信息。
GaTechThomas 2015年

2

通过将它添加到body标签,我能够使它正常工作。对我来说更好,因为html元素上没有任何内容。

body {
    overflow-y: scroll;
}

2

一种替代方法是将html元素的宽度设置为100vw。在许多(如果不是大多数)浏览器上,这会抵消滚动条对宽度的影响。

html { width: 100vw; }

0

将高度设置为101%是我解决该问题的方法。在超过视口高度的页面和未超过视口高度的页面之间切换时,页面将不再“轻拂”。



0

我这样做:

html {
    margin-left: calc(100vw - 100%);
    margin-right: 0;
}

然后,当不需要时,我不必查看难看的灰色滚动条。


问题要求它始终可见。
Corv1nus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.