私個人的なことですが、最近はjQueryやReactなどのライブラリを使わずに、JavaScriptでコードを書く勉強をしています。これがまた、ほとんど経験がないので難しい・・・
ところで「JavaScriptで特定の要素の幅や高さを取得して何かをしたい」という場面って結構あります。
特定の要素の幅や高さを取得する方法はいくつかありますが、今回は「clientWidth,clientHeight」を使う方法について書きました。
clientWidth,clientHeightを使って特定の要素の幅と高さを取得する方法
例えば、div要素の幅と高さをJavaScriptで取得する場合は以下のように書きます。
html
<div id="box">box</div>
CSS
#box{
width: 300px;
height: 250px;
}JavaScript
let client_w = document.getElementById('box').clientWidth;
let client_h = document.getElementById('box').clientHeight;
//「300px 250px」とコンソールに表示されます
console.log(client_w + 'px ' + client_h + 'px');CSSプロパティを指定した場合の幅と高さの取得について
clientWidth,clientHeightは、要素によく指定するCSSプロパティ(padding,border,scrollなど)によって取得される数値がどう変わるのか・・・今後も使いそうなので、以下にサンプルを作ってまとめました。
clientWidth,clientHeightでの取得の有無
| 取得 | |
|---|---|
| padding | ○ |
| border | × |
| scroll | × |
「box-sizing:border-box」を指定して要素内にborderを含めてしまう場合は、borderのサイズ分だけ数値がマイナスされる、ということがわかりました。
「scroll」についても要素内にスクロールバーが表示されていれば、そのサイズ分だけ数値がマイナスされました。なるほどです、勉強になりました。
offsetWidth,offsetHeightでも取得できるよ
「特定の要素の幅や高さを取得する方法」の別の方法として「offsetWidth,offsetHeight」を使う方法もあります。
このページに書いた「clientWidth,clientHeight」と比較すると、取得できる数値に違いがあることも理解しました。以下にまとめましたので、機会がありましたらご参考ください。

このページを共有する