WebKit/Blink で MacOS トラックパッド ユーザーのスクロール バーが非表示にならないようにする 質問する

WebKit/Blink で MacOS トラックパッド ユーザーのスクロール バーが非表示にならないようにする 質問する

MacOS 10.7 (Mac OS X Lion) 以降の WebKit/Blink (Safari/Chrome) のデフォルトの動作では、トラックパッドのユーザーが使用していないときはスクロール バーが非表示になります。これは混乱を招く可能性がある; スクロール バーは、要素がスクロール可能であることを示す唯一の視覚的な手がかりとなることがよくあります。

例 (jsfiddle

<div class="frame">
    Foo<br />
    Bar<br />
    Baz<br />
    Help I'm trapped in an HTML factory! 
</div>
.frame {
    overflow-y: auto;
    border: 1px solid black;
    height: 3em;
    width: 10em;
    line-height: 1em;
}​

スクロールバーが表示されない div のスクリーンショット

スクロールバーが表示された div のスクリーンショット


WebKit のスクロール可能な要素にスクロール バーを常に表示させるにはどうすればよいですか?

ベストアンサー1

スクロールバーの外観はWebKitの-webkit-scrollbar疑似要素 [ブログ]。デフォルトの外観と動作を無効にするには、-webkit-appearance [ドキュメント]none

デフォルトのスタイルを削除するため、自分でスタイルを指定する必要があります。そうしないと、スクロール バーは表示されません。次の CSS は、非表示のスクロール バーの外観を再現します。

例 (jsfiddle

CS
.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) スクリーンショット

マウスをホバーする必要のない、Webkit のスクロールバーを示すスクリーンショット

おすすめ記事