为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

交互式爱情 2019-09-19 10:27:36

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


查看完整描述

3 回答

?
摇曳的蔷薇

可以使用WebKit的-webkit-scrollbar伪元素  [ blog ]来控制滚动条的外观。您可以禁用通过设置默认的外观和行为-webkit-appearance [ 文件 ]来none。


因为您要删除默认样式,所以您还需要自己指定样式或滚动条永远不会显示。以下CSS重新创建隐藏滚动条的外观:


示例(jsfiddle)

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; 



查看完整回答
反对 回复 2019-09-19
?
慕仰1329654

对于我在动态添加可滚动部分的单页Web应用程序,我通过以编程方式向下滚动一个像素来触发OSX的滚动条:


// Plain JS:

var el = document.getElementById('scrollable-section');

el.scrollTop = 1;

el.scrollTop = 0;


// jQuery:

$('#scrollable-section').scrollTop(1).scrollTop(0);

这会触发视觉提示淡入淡出。


查看完整回答
反对 回复 2019-09-19
?
尚方宝剑之说

这是一段较短的代码,可以重新启用整个网站的滚动条。我不确定它是否与当前最受欢迎的答案有很大不同,但现在它是:


::-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);

}

在此链接中找到:http://simurai.com/blog/2011/07/26/webkit-scrollbar


查看完整回答
反对 回复 2019-09-19

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信