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だけでも可能なので「こういう方法がある」と覚えておくと役に立ちそうです。

Visual Studio Codeの設定を複数の端末間で同期する「Settings Sync」機能の使い方
Visual Studio CodeでCSVの編集を見やすく行う拡張機能「Edit csv」
JavaScriptで配列内から特定条件の要素を探す方法
EmmetのWrap with Abbreviationで複数行のマークアップを効率的に行う
Vue CLI 3でfaviconの設定をする方法
Nuxt.jsで「Classic mode for store/ is deprecated and will be removed in Nuxt 3.」のエラーメッセージが表示される場合の対処法
選択テキストをHTMLタグですぐ囲めるようになるVisual Studio Code拡張機能「htmltagwrap」
PubSubHubbubを利用してWebサイトの更新をリアルタイムに通知しよう
iOS Safariでinputタグにフォーカスを合わせると、自動で画面が拡大してしまう原因と解決方法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
iTerm2終了時に表示される確認ダイアログを非表示にする
マウス操作の完成度が高いウインドウリサイズアプリ「Magnet」
Visual Studio CodeからFTPソフトのTransmitを使用する拡張機能「Transmit」
BetterTouchToolでトラックパッドの端っこのクリックを無効化して、手が軽く触れることによる誤操作を防止する
macのFinderで不可視ファイルを見れるようにする幾つかの方法
Google Chromeに「タブを検索」機能が追加!開いているタブや最近閉じたタブから検索が可能に!
iPhoneアプリ「Bobby」とGoogleカレンダーを活用して、サブスクリプションサービスの管理を行う
「Dart Sass」「LibSass」「Ruby Sass」などSassの種類や記法に関するまとめ
Visual Studio Codeの文字サイズやタブサイズの設定方法
PCの単語登録(辞書登録機能)の辞書分類やルールについて改めて考えてみる