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

SafariでFacebookのPage Pluginに「リクエストを処理できませんでした」とダイアログが表示される問題
Vue.jsを使う人が最低限導入しておきたいVisual Studio Codeの拡張機能
SVGを操作するためのCSSプロパティまとめ
gulpでPostCSSを使う方法
CSSでclassがついていないタグにだけスタイルを当てる方法
WordPressで作成した記事をSlackでシェアしたときに、抜粋文が長く表示される場合の対処法
Movable TypeでMTLoopを使ってkeyでソートしたときに、10個以上表示させると並びがおかしくなる
コーディング時にちゃんと意識したい複数語の連結方法一覧(キャメルケース・スネークケース・ケバブケース)
Dashで「Secure Input is Enabled」と表示される場合の対処法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
MacのSIPのオン・オフを切り替える方法
様々な作業を自動化するgulpの基礎と導入方法
Path Finderの情報パネルにある「作成日」「更新日」「追加日」の違い
Path Finderで、リストの1番下のフォルダを素早く選択する方法
Jedit Ωに「別名で保存」のショートカットキーを割り当てる方法
Alfred 4のスニペットで使えるリッチテキスト機能の使い方
ポモドーロテクニックの起動し忘れを防止するために仕事開始時にメッセージを表示させたり工夫をする
テキストエディタをAtomからVisual Studio Codeに移行しました
ImageOptimをターミナルから起動する方法
1Passwordでウェブサイトの入力フォームを一瞬で入力する方法