Open3
スクロールバー表示の調査

スクロールバー表示されているかどうかの検知可能かどうか
可能そう
function scrollbarXVisible(element) {
return element.scrollHeight > element.clientHeight;
}
// or
function scrollbarYVisible(element) {
return element.scrollWidth > element.clientWidth;
}
スクロールバーの幅を取得可能か
可能そう
- https://neos21.net/blog/2017/12/30-02.html
- https://daiiz.hatenablog.com/entry/2014/08/15/215916
- https://webrandum.net/css-javascript-get-scrollbar-width/
let table = document.querySelectorAll('.table_scroll .table_main');
if(table[0]){
let clientWidth = table[0].clientWidth;
let offsetWidth = table[0].offsetWidth;
let scrollbarWidth = offsetWidth - clientWidth;
console.log(scrollbarWidth);
}
スクロールバーを非表示にできるかどうか
できそう
.sample {
-ms-overflow-style: none; /* IE, Edge 対応 */
scrollbar-width: none; /* Firefox 対応 */
}
.smaple::-webkit-scrollbar {
display: none; /* Chrome, Safari 対応 */
}
- https://frontend.seeknext.co.jp/scroll-bar-none/
- https://zero-plus.io/media/scrollbar-hide/
- https://web-camp.io/magazine/archives/89195
- https://junpei-sugiyama.com/scrollbar-hidden/
スクロールバーの最大幅は何pxか
正確にはわからず
17px? っぽい
古い & この記事しかないので信憑性に欠ける
デザインはどのように実装する想定になるか
- スクロールバーのwidthを固定にする(firefoxは除く)
- スクロールバーをそもそも非表示にする

ブラウザのシェア

スクロールバーの幅を制御、変更可能か
できる?
Firefox の場合
細かくは設定できなそう
/* スクロールバー(幅) 対象要素 */
scrollbar-width: thin;
/* スクロールバー軌道(色) 対象要素 */
scrollbar-color: thumb track;
/* 移動タブ(色) 対象要素 */
scrollbar-color: thumb track;
- https://developer.mozilla.org/ja/docs/Web/CSS/scrollbar-width
- https://developer.mozilla.org/ja/docs/Web/CSS/scrollbar-color
- https://ameblo.jp/personwritep/entry-12726832514.html
- デザイン変更:https://coliss.com/articles/build-websites/operation/css/custom-scrollbars-in-css.html
Firefox 以外のブラウザ
細かく style 設定できそう
/* Firefox 以外に対応 */
*::-webkit-scrollbar {
/* スクロールバー全体のstyle: width, height はここでしかできなそう */
width: 32px; // y
height: 32px; // x
background: red;
}
::-webkit-scrollbar-track {
/* スクロールバーの背景 */
width: 24px; // 効かない
height: 24px; // 効かない
background: yellow;
border-radius: 8px;
}
::-webkit-scrollbar-thumb {
/* スクロールバーのスクロールして動かす部分 */
width: 20px; // 効かない
height: 20px; // 効かない
background: blue;
border-radius: 50px;
}