次は「複数要素」に対する親要素からの相対位置を取得します。
3-2.positionメソッド【返却値(objectオブジェクト) = 要素.position( )】で複数要素の相対位置を取得する(できるか?)
3-1.では1つの要素に対する親要素からの相対位置を取得しましたが、複数の要素ではどうなるのか?試してみます。
以下、サンプルの通り、
「テストエリア1」と「テストエリア2」を要素としてpositionメソッドを実行したところ、
「テストエリア1」の幅のみ取得できたことがわかります。
※3-1.で確認
positionメソッドは複数要素には対応していないことがわかります。
サンプルソース
// HTML <input type="button" value="ボタンを押すと、指定した要素の親要素からの相対位置が表示されます"><br> <div class="box"> <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div> <div class="box"><b>テストエリア2</b><div class="box-css-test-area-2">・・・略・・・</div></div> </div> // CSS /* テストエリア1 */ .box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;} /* テストエリア2 */ .box-css-test-area-2 {background:#F5EEFF; border:5px solid #88f; padding:20px; margin:10px; height:30px; width:450px;} // jQuery $(function() { $("input[type=button]").click(function(){ // 【構文】返却値(objectオブジェクト) = 要素.position() // サンプル:「テストエリア1と2」の左上からの相対位置を取得する // 左からの相対位置 alert("[" + $(".box-css-test-area-1, .box-css-test-area-2").position().left + "]"); }); });
実装例
テストエリア1とテストエリア2に対する親要素からの相対位置を取得します。
要素:テストエリア1とテストエリア2
要素:テストエリア1とテストエリア2
テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)
offsetメソッドと同様に、
前回と同じ方法では「複数要素」に対する
親要素からの相対位置は取得できないことがわかりました。
次回は違う方法で考えます。
それでは、また。