jQueryには、要素の高さ・幅を取得するメソッドが複数用意されています。これらの違いなどを含めて説明します。
jQueryで高さ・幅を取得する4タイプ8つのメソッド
HTMLの要素の高さを取得するメソッドには、height(), innerHeight(), outerHeight()の3つがあり、同じく幅を取得するメソッドにはwidth(), innerWidth(), outerWidth()の3つがあります。
これらのメソッドの違いは、paddingやmargin、borderの値を含めるかにあります。
図で説明する各メソッドの違い
高さを取得するメソッドについて、図で説明すると以下のようになります。
次から、より詳しく説明していきます。
width(), height()
取得する値:コンテンツ
CSSなどで指定したwidthとheightの値を取得します。また、他のメソッドとは異なりwidthとheightを指定して変更することができます。
innerWidth(), innerHeight()
取得する値:コンテンツ + padding
widthとheightに加えて、paddingを含めた値を取得します。
outerWidth(), outerHeight()
取得する値:コンテンツ + padding + border
widthとheightに加えて、paddingとborderを含めた値を取得します。
outerWidth(true), outerHeight(true)
取得する値:コンテンツ + padding + border + margin
また、outerWidth()とouterHeight()は引数にtrueを渡すと、marginも含めた値を取得できます。
サンプル
以下のように、CSSで幅やmargin, padding, borderが指定された要素があるとします。
1 2 3 4 5 6 7 8 9 10 11 |
<div id="box">コンテンツ</div> <style type="text/css"> #box { height: 50px; width: 50px; padding: 10px; border: solid 5px #000; margin: 10px; } </style> |
この要素に対して幅をそれぞれ取得すると以下のようになります。
1 2 3 4 |
$("#box").width(); //=>50px $("#box").innderWidth(); //=>60px $("#box").outerWidth(); //=>65px $("#box").outerWidth(true); //=>75px |
これらの違いは非常にややこしいですが。間違えるとデザインが崩れてしまうこともあるので気をつけてください。