offsetX,offset Left,offset Widthの違いの詳細
11482 ワード
offsetX,offset Left,offset Widthの違い
offsetX/offsetY
オフセットXとoffsetYは、最近の親レベルの要素に対する座標(親レベルの位置に関係なく)を表します.
要素が最近の親レベル要素の座標に対して、すべての親レベルに位置していない場合、ドキュメント全体に対して
要素の視覚サイズを返します.
offsetX/offsetY
オフセットXとoffsetYは、最近の親レベルの要素に対する座標(親レベルの位置に関係なく)を表します.
.big{
width: 200px;
height: 200px;
border: 1px solid red;
position: absolute;
top: 100px;
left: 100px;
}
.box{
width: 100px;
height: 100px;
border: 1px solid green;
margin-left: 50px;
}
<div class="big">
<div class="box"></div>
</div>
var box = document.getElementsByClassName('box')[0];
var big = document.getElementsByClassName('big')[0];
big.onclick = function(e){
e = e || window.event;
console.log(e.offsetX);// box box , big big , 。
}
offset Left/offset Top要素が最近の親レベル要素の座標に対して、すべての親レベルに位置していない場合、ドキュメント全体に対して
.big{
width: 200px;
height: 200px;
border: 1px solid red;
/* position: absolute; */
}
.small{
width: 100px;
height: 100px;
border: 1px solid green;
}
<div class="big">
<div class="small"></div>
</div>
var small = document.getElementsByClassName('small')[0];
var big = document.getElementsByClassName('big')[0];
console.log(small.offsetLeft); // position 9, position 0
offset Width/offset Height要素の視覚サイズを返します.
.big{
width: 200px;
height: 200px;
border: 1px solid red;
position: absolute;
top: 100px;
left: 100px;
}
.box{
width: 100px;
height: 100px;
border: 1px solid green;
margin-left: 50px;
}
<div class="big">
<div class="box"></div>
</div>
var box = document.getElementsByClassName('box')[0];
var big = document.getElementsByClassName('big')[0];
console.log(big.offsetWidth);//202
console.log(box.offsetWidth);//102
注意:offset Leftとoffset Widthはともにdom要素上の属性であり、offsetXはfunction上のイベントの属性である.