jQueryで要素やブラウザの横幅を取得する方法です。
横幅といってもborder
を含んだりpadding
の内側だったりとさまざまな取得方法があります。
ブラウザの横幅はスクロールバーが含まれないため、含める方法も併せてご紹介します。
目次
要素の幅を取得
要素の幅は以下の図のように、4パターン取得できます。
上図の赤字がメソッドですが、要素のどの部分を取得するかでそれぞれ用意されていますので、以下でご紹介します。
width() でpaddingの内側を取得
paddingの内側の幅を取得します。
基本構文
$(‘p’).width()
HTML&CSS
1 2 3 4 5 6 7 8 9 10 |
<style> p { width: 780px; margin: 10px; padding: 10px; border: 3px solid #000; } </style> <p>横幅を取得</p> |
jQuery
1 2 3 4 5 6 7 8 9 |
$(function() { // padding内側の横幅を取得し、変数に格納 var w = $('p').width(); // コンソールログに表示 console.log(w); }); |
結果(コンソール)
780
padding
の内側の横幅が取得できました。
ちなみにwidth()
はpx
などの単位は除外され、整数で取得されます。
コンソールについては下記ページでご紹介しています。
innerWidth() でborderの内側を取得
paddingを含めたborderの内側の幅を取得します。
基本構文
$(‘p’).innerWidth()
HTML&CSS
1 2 3 4 5 6 7 8 9 10 |
<style> p { width: 780px; margin: 10px; padding: 10px; border: 3px solid #000; } </style> <p>横幅を取得</p> |
jQuery
1 2 3 4 5 6 7 8 9 |
$(function() { // border内側の横幅を取得し、変数に格納 var w = $('p').innerWidth(); // コンソールログに表示 console.log(w); }); |
結果(コンソール)
800
上記のようにpadding
の値を含めたborder
の内側の横幅が取得できました。
padding
は左右10px
ずつなので、以下のように800px
となります。
本体 780px + 左padding 10px + 右padding 10px = 800px
outerWidth() でborderを含めて取得
paddingとborderを含めた幅を取得します。
基本構文
$(‘p’).outerWidth()
HTML&CSS
1 2 3 4 5 6 7 8 9 10 |
<style> p { width: 780px; margin: 10px; padding: 10px; border: 3px solid #000; } </style> <p>横幅を取得</p> |
jQuery
1 2 3 4 5 6 7 8 9 |
$(function() { // paddingとborderを含めた横幅を取得し、変数に格納 var w = $('p').outerWidth(); // コンソールログに表示 console.log(w); }); |
結果(コンソール)
806
上記のようにpadding
とborder
の値を含めた横幅が取得できました。
padding
が左右10px
ずつとborder
が左右3px
ずつなので、以下のように806px
となります。
本体 780px + 左padding 10px + 右padding 10px + 左border 3px + 右border 3px = 806px
outerWidth(true) でmarginも含めて取得
outerWidth()
の引数にtrue
を指定するだけでpadding
とborder
に加え、margin
までも含めた幅を取得します。
基本構文
$(‘p’).outerWidth(true)
HTML&CSS
1 2 3 4 5 6 7 8 9 10 |
<style> p { width: 780px; margin: 10px; padding: 10px; border: 3px solid #000; } </style> <p>横幅を取得</p> |
jQuery
1 2 3 4 5 6 7 8 9 |
$(function() { // paddingとborderとmarginも含めた横幅を取得し、変数に格納 var w = $('p').outerWidth(true); // コンソールログに表示 console.log(w); }); |
結果(コンソール)
826
上記のようにpadding
とborder
とmargin
の値を含めた横幅が取得できました。
padding
とmargin
が左右10px
ずつとborder
が左右3px
ずつなので、以下のように826px
となります。
本体 780px + 左padding 10px + 右padding 10px + 左border 3px + 右border 3px + 左margin 10px + 右margin 10px = 826px
ブラウザの幅を取得
jQueryでスクロールバーを除く横幅を取得
先ほどご紹介したwidth()
innerWidth()
outerWidth()
ではブラウザのスクロールバーを除外した横幅しか取得されません。
1 2 3 4 5 6 7 8 9 |
$(function() { // セレクタにwindowを指定しブラウザの横幅を取得して、変数に格納 var w = $(window).width(); // コンソールログに表示 console.log(w); }); |
結果(コンソール)
1373
javascriptでスクロールバーも含めた横幅を取得
javascriptのwindow.innerWidth
を使えばスクロールバーを含めた横幅を取得できます。
1 2 3 4 5 |
// window.innerWidthでブラウザのスクロールバーも含めて横幅を取得し、変数に格納 var w = window.innerWidth; // コンソールログに表示 console.log(w); |
結果(コンソール)
1390
スクロールバーも含めたい場合はwindow.innerWidth
を使いましょう。
要素の幅を設定、変更する
上記でご紹介してきたメソッドを使って、要素の幅を変更したり設定できます。
ここでは一気にご紹介します。
HTML&CSS
1 2 3 4 5 6 7 8 9 10 11 12 |
<style> p { width: 780px; margin: 10px; padding: 10px; border: 3px solid #000; } </style> <p id="w01">幅を指定1</p> <p id="w02">幅を指定2</p> <p id="w03">幅を指定3</p> |
jQuery
1 2 3 4 5 6 7 8 9 10 11 12 |
$(function() { // padding内側の幅を設定 $('#w01').width(280); // border内側の幅を設定 $('#w02').innerWidth(280); // paddingとborderを含めた幅を設定 $('#w03').outerWidth(280); }); |
結果(HTML)
1 2 3 |
<p id="w01" style="width: 280px">幅を指定1</p> <p id="w02" style="width: 260px">幅を指定2</p> <p id="w03" style="width: 254px">幅を指定3</p> |
<p>
要素にstyle
属性が追加され、それぞれに値が追加されました。
通常、innerWidth()
とouterWidth()
は幅の設定はできないという認識でしたが、試してみると上記のように動作しました。
しかもinnerWidth()
はpadding
を除いた値が、 outerWidth()
はpadding
とborder
を除いた値が設定され、何気に便利ですね。
ちなみにouterWidth(true)
での値の設定はできませんでした。