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

スクロールしてもテーブルヘッダーが追尾するテーブルの作り方
選択テキストをHTMLタグですぐ囲めるようになるVisual Studio Code拡張機能「htmltagwrap」
Backlogで2段階認証を設定後、SourceTreeでアカウントエラーが発生する場合の対処法
pointer-eventsプロパティでクリックイベントを無効化にする|気になるCSSプロパティ
JavaScriptで簡単にCookie操作ができるライブラリ「js-cookie」
様々な作業を自動化するgulpの基礎と導入方法
HTMLタグの入力をラクにするスニペット集
MacでCLIツールをインストールするときに行うターミナルでの「パスを通す」とは一体なにか?
Google Maps APIをローカル開発環境で使用するときの制限設定方法
WebPに対応して画像サイズを最適化する方法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Karabiner-Elementsでcaps lockで修飾キー全押し、caps lock + 修飾キーで押したキー以外の修飾キーを押す方法(reverseキー)
Macのウインドウサイズを瞬時に変更できる「BetterSnapTool」を自分好みにカスタマイズする方法
メールとチャットを一元管理してワークスペースを整理する「Rambox」
Vue.jsでtemplateタグ内にscriptやstyleタグを生成する方法|Tags with side effect are ignored
BetterTouchToolでウィンドウが最大化された状態で「ウィンドウを右に最大化」すると左に移動してしまう問題
BetterTouchToolを使って、Finderのファイルを「規定アプリケーションで開く」ショートカットキーを設定する方法
Google Chromeのタブを検索するAlfred Workflowの「Search Safari and Chrome Tabs」で、タブ移動をラクにする
「mas-cli」を使ってターミナルからMac App Storeの操作をできるようにする
Macの高機能diffツール「Kaleidoscope」
Bartenderが重いときの乗り換え候補!メニューバー管理アプリまとめ