MacK上的WebKit / Blink(Safari / Chrome)默认行为10.7(Mac OS X Lion)用于在不使用触控板用户时隐藏滚动条。 This can be confusing;滚动条通常是元素可滚动的唯一视觉提示。
<div class="frame">
Foo<br />
Bar<br />
Baz<br />
Help I'm trapped in an HTML factory!
</div>
CSS
.frame {
overflow-y: auto;
border: 1px solid black;
height: 3em;
width: 10em;
line-height: 1em;
}
WebKit(Chrome)截图
Presto(Opera)截图
如何强制滚动条始终显示在WebKit中的可滚动元素上?
答案 0 :(得分:233)
可以使用WebKit的-webkit-scrollbar
伪元素 [blog] 来控制滚动条的外观。您可以通过将-webkit-appearance
[docs] 设置为none
来停用默认外观和行为。
因为您要删除默认样式,所以您还需要自己指定样式或滚动条永远不会显示。以下CSS重新创建隐藏滚动条的外观:
.frame::-webkit-scrollbar {
-webkit-appearance: none;
}
.frame::-webkit-scrollbar:vertical {
width: 11px;
}
.frame::-webkit-scrollbar:horizontal {
height: 11px;
}
.frame::-webkit-scrollbar-thumb {
border-radius: 8px;
border: 2px solid white; /* should match background, can't be transparent */
background-color: rgba(0, 0, 0, .5);
}
.frame::-webkit-scrollbar-track {
background-color: #fff;
border-radius: 8px;
}
WebKit(Chrome)截图
答案 1 :(得分:17)
对于我在动态添加可滚动部分的单页Web应用程序,我通过以编程方式向下滚动一个像素来触发OSX的滚动条:
// Plain JS:
var el = document.getElementById('scrollable-section');
el.scrollTop = 1;
el.scrollTop = 0;
// jQuery:
$('#scrollable-section').scrollTop(1).scrollTop(0);
这会触发视觉提示淡入淡出。
答案 2 :(得分:10)
这是一段较短的代码,可以重新启用整个网站的滚动条。我不确定它是否与目前最受欢迎的答案有很大不同,但现在是:
::-webkit-scrollbar {
-webkit-appearance: none;
width: 7px;
}
::-webkit-scrollbar-thumb {
border-radius: 4px;
background-color: rgba(0,0,0,.5);
box-shadow: 0 0 1px rgba(255,255,255,.5);
}
答案 3 :(得分:3)
浏览器滚动条在iPhone / iPad上根本不起作用。在工作中,我们使用自定义JavaScript滚动条(如jScrollPane)来提供一致的跨浏览器UI:http://jscrollpane.kelvinluck.com/
它非常适合我 - 你可以制作一些非常漂亮的自定义滚动条,适合你的网站设计。
答案 4 :(得分:2)
处理Lion的隐藏滚动条的另一个好方法是显示向下滚动的提示。它不适用于文本字段等小滚动区域,也适用于大滚动区域,并保持网站的整体风格。执行此操作的一个站点是http://versusio.com,只需检查此示例页面并等待1.5秒以查看提示:
http://versusio.com/en/samsung-galaxy-nexus-32gb-vs-apple-iphone-4s-64gb
实现并不难,但您必须注意,当用户已经滚动时,您不会显示提示。
你需要jQuery + Underscore和
$(window).scroll
检查用户是否已经自己滚动,
_.delay()
在显示提示之前触发延迟 - 提示不应该是突兀的
$('#prompt_div').fadeIn('slow')
淡出你的提示,当然
$('#prompt_div').fadeOut('slow')
用户在看到提示后滚动
此外,您还可以绑定Google Analytics事件以跟踪用户的滚动行为。