CSSやJavaScriptでスクロールバーの横幅を取得する方法

コーディングをしていて、スクロールバー自体の横幅を取得したいときがあったので、取得方法についてまとめておきます。
macOSで常にスクロールバーが表示されるようにする
macOSでは設定によってはスクロールバーが表示されないこともあります。
[システム環境設定]→[一般]の「スクロールバーの表示」で変更できます。
![[システム環境設定]→[一般]の「スクロールバーの表示」](https://webrandum.net/mskz/wp-content/uploads/2022/05/image_1-2.png)
スクロールバーの幅を取得する
1. CSSで取得する方法
スクロールバーが表示されている場所がページ全体に対しての場合は、下記の記述で取得できます。
calc(100vw - 100%);100vwはビューポートの横幅全体が取れるのでスクロールバーを含む横幅、100%はbodyタグの横幅100%が取得できるのでスクロールバーを含まない横幅が取得できます。
それらの差をcalcで計算して取ることでスクロールバーの取得ができます。
100vwはビューポートの横幅になるので、ページ全体に対してのスクロールバーに対してのみしか使用できません。
2. JavaScriptのinnerWidthとclientWidthで取得する方法
JavaScriptを使う方法もあり、下記のようにinnerWidthとclientWidthの差を取得するだけです。
let scrollbarWidth = window.innerWidth - document.body.clientWidth;
console.log(scrollbarWidth);3. JavaScriptのoffsetWidthとclientWidthで取得する方法
例えば、テーブルのスクロールバーなど、ページ全体ではなく特定要素に対してのスクロールバーの横幅を取得したい場合は下記の特定要素のclientWidthとoffsetWidthの差を取得します。
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);
}スクロールバーの幅を取得したいことはあまりありませんが、簡単に取得できますし、ページ全体であればCSSだけでも可能なので「こういう方法がある」と覚えておくと役に立ちそうです。

WordPressの自動バックグラウンド更新を無効にする方法とその注意点
Google Maps APIをローカル開発環境で使用するときの制限設定方法
Safari 12.1から外観モード(ライト/ダーク)の判定をCSSで行えるように!
WordPressって何なの?これからWordPressを勉強したい人がとりあえず知っておきたい事
アクセス解析ツールの定番!!Googleアナリティクスの登録方法
CSS疑似要素(::beforeや::after)のcontent内で改行したり半角スペースを複数入力する方法
既存プロジェクトにCompassが導入されている場合に備えて、最低限Sassのコンパイルだけでも行えるようにしておく
Vue CLI 3でfaviconの設定をする方法
Visual Studio Codeでできる最低限のGit操作方法
EJSのincludeで別ファイルを読み込むときの画像パスを指定する方法
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Obsidianで整理した知識をAnkiで定着させる方法
Figma × Keyboard Maestroでどこまで効率化できる?
マウス操作の完成度が高いウインドウリサイズアプリ「Magnet」
Macで複数ディスプレイを使っている場合に便利な設定集
AppCleanerでMacアプリを関連ファイルごと完全に削除する
操作に没頭できる!Firefox版 Arcのようなブラウザ「Zen Browser」
chezmoi(シェモア)で始めるdotfiles管理
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」