防止在WebKit / Blink中为MacOS触控板用户隐藏滚动条

自10.7(Mac OS X Lion)以来MacOS上的WebKit / Blink(Safari / Chrome)默认行为是在不使用触控板用户时隐藏滚动条。这可能令人困惑 ; 滚动条通常是元素可滚动的唯一视觉提示。


示例(jsfiddle)

HTML

<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中的可滚动元素上?


交互式爱情
浏览 494回答 3
3回答

摇曳的蔷薇

可以使用WebKit的-webkit-scrollbar伪元素&nbsp; [ blog ]来控制滚动条的外观。您可以禁用通过设置默认的外观和行为-webkit-appearance [ 文件 ]来none。因为您要删除默认样式,所以您还需要自己指定样式或滚动条永远不会显示。以下CSS重新创建隐藏滚动条的外观:示例(jsfiddle)CSS.frame::-webkit-scrollbar {&nbsp; &nbsp; -webkit-appearance: none;}.frame::-webkit-scrollbar:vertical {&nbsp; &nbsp; width: 11px;}.frame::-webkit-scrollbar:horizontal {&nbsp; &nbsp; height: 11px;}.frame::-webkit-scrollbar-thumb {&nbsp; &nbsp; border-radius: 8px;&nbsp; &nbsp; border: 2px solid white; /* should match background, can't be transparent */&nbsp; &nbsp; background-color: rgba(0, 0, 0, .5);}.frame::-webkit-scrollbar-track {&nbsp;&nbsp; &nbsp; background-color: #fff;&nbsp;&nbsp; &nbsp; border-radius: 8px;&nbsp;}&nbsp;

Helenr

对于我在动态添加可滚动部分的单页Web应用程序,我通过以编程方式向下滚动一个像素来触发OSX的滚动条:// Plain JS:var el = document.getElementById('scrollable-section');el.scrollTop = 1;el.scrollTop = 0;// jQuery:$('#scrollable-section').scrollTop(1).scrollTop(0);这会触发视觉提示淡入淡出。
打开App,查看更多内容
随时随地看视频慕课网APP