jQueryで幅の取得と設定(width,innerWidth,outerWidth)

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

jQueryで要素やブラウザの横幅を取得する方法です。

横幅といってもborderを含んだりpaddingの内側だったりとさまざまな取得方法があります。

ブラウザの横幅はスクロールバーが含まれないため、含める方法も併せてご紹介します。

 

要素の幅を取得

要素の幅は以下の図のように、4パターン取得できます。

width

上図の赤字がメソッドですが、要素のどの部分を取得するかでそれぞれ用意されていますので、以下でご紹介します。

width() でpaddingの内側を取得

paddingの内側の幅を取得します。

基本構文

$(‘p’).width()

HTML&CSS

jQuery

 結果(コンソール)

780

paddingの内側の横幅が取得できました。

ちなみにwidth()pxなどの単位は除外され、整数で取得されます。

 

コンソールについては下記ページでご紹介しています。

参考:jQueryでコンソールログを使ったデバッグ方法

innerWidth() でborderの内側を取得

paddingを含めたborderの内側の幅を取得します。

基本構文

$(‘p’).innerWidth()

HTML&CSS

jQuery

 結果(コンソール)

800

上記のようにpaddingの値を含めたborderの内側の横幅が取得できました。

paddingは左右10pxずつなので、以下のように800pxとなります。

本体 780px + 左padding 10px + 右padding 10px = 800px

outerWidth() でborderを含めて取得

paddingとborderを含めた幅を取得します。

基本構文

$(‘p’).outerWidth()

HTML&CSS

jQuery

 結果(コンソール)

806

上記のようにpaddingborderの値を含めた横幅が取得できました。

paddingが左右10pxずつとborderが左右3pxずつなので、以下のように806pxとなります。

本体 780px + 左padding 10px + 右padding 10px + 左border 3px + 右border 3px = 806px

outerWidth(true) でmarginも含めて取得

outerWidth()の引数にtrueを指定するだけでpaddingborderに加え、marginまでも含めた幅を取得します。

基本構文

$(‘p’).outerWidth(true)

HTML&CSS

jQuery

 結果(コンソール)

826

上記のようにpaddingbordermarginの値を含めた横幅が取得できました。

paddingmarginが左右10pxずつとborderが左右3pxずつなので、以下のように826pxとなります。

本体 780px + 左padding 10px + 右padding 10px + 左border 3px + 右border 3px + 左margin 10px + 右margin 10px = 826px

ブラウザの幅を取得

jQueryでスクロールバーを除く横幅を取得

先ほどご紹介したwidth()innerWidth()outerWidth()ではブラウザのスクロールバーを除外した横幅しか取得されません。

 結果(コンソール)

1373

javascriptでスクロールバーも含めた横幅を取得

javascriptのwindow.innerWidthを使えばスクロールバーを含めた横幅を取得できます。

 結果(コンソール)

1390

スクロールバーも含めたい場合はwindow.innerWidthを使いましょう。

要素の幅を設定、変更する

上記でご紹介してきたメソッドを使って、要素の幅を変更したり設定できます。

ここでは一気にご紹介します。

HTML&CSS

jQuery

 結果(HTML)

<p>要素にstyle属性が追加され、それぞれに値が追加されました。

通常、innerWidth()outerWidth()は幅の設定はできないという認識でしたが、試してみると上記のように動作しました。

しかもinnerWidth()paddingを除いた値が、 outerWidth()paddingborderを除いた値が設定され、何気に便利ですね。

ちなみにouterWidth(true)での値の設定はできませんでした。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

*