1. ホーム
  2. css

[解決済み] WebKit/BlinkでMacOSのトラックパッドユーザーのためにスクロールバーが隠れないようにすること

2022-05-03 02:33:59

質問

MacOS 10.7 (Mac OS X Lion) 以降の 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 (Chrome)のスクリーンショット

Presto (Opera)のスクリーンショット


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

どのように解決するのですか?

スクロールバーの外観を制御するには、WebKit の -webkit-scrollbar 擬似要素  [ ブログ ] . を設定することで、デフォルトの外観と動作を無効にすることができます。 -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; 
} 

WebKit (Chrome)のスクリーンショット