ホームページ  >  記事  >  ウェブフロントエンド  >  offsetleft 互換性_JavaScript スキルの理解について話す

offsetleft 互換性_JavaScript スキルの理解について話す

WBOY
WBOYオリジナル
2016-05-16 15:32:431424ブラウズ

この属性の基本的な使用法については、 offsetleft 属性の使用法の詳細な説明 の章を参照してください。

この属性には特定の互換性の問題があります。つまり、IE7 ブラウザでは、その戻り値は最も近い親要素の左側までの距離になります。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css">
* {
 margin: 0px;
 padding: 0px;
}
#main {
 width: 300px;
 height: 300px;
 background: red;
 position: absolute;
 left: 100px;
 top: 100px;
}
#box {
 width: 200px;
 height: 200px;
 background: blue;
 margin:50px;
 overflow:hidden;
}
#inner {
 width: 50px;
 height: 50px;
 background: green;
 text-align: center;
 line-height: 50px;
 margin: 50px;
}
</style>
<script type="text/javascript">
window.onload=function(){
 var inner=document.getElementById("inner");
 inner.innerHTML=inner.offsetLeft;
}
</script>
</head>
<body>
<div id="main">
 <div id="box">
 <div id="inner"></div>
 </div>
</div>
</body>
</html>

上記のコードは他のブラウザでは値 100 を返しますが、IE7 では戻り値は 50 です。

IE6 についてはテストがありませんので、興味があればテストしてみてください。

少し時間をとって、offsetLeft と style.left の違いを紹介しましょう

offsetLeft は、親オブジェクトを基準にして左マージンを取得します

left は、位置属性を持つ親オブジェクトを基準とした左マージン

を取得または設定します (位置は相対として定義されます)。

親 div の位置が相対として定義され、子 div の位置が絶対として定義されている場合、子 div の style.left の値は親 div の値に対して相対的になります。
これは offsetLeft と同じですが、違いは次のとおりです:

1. style.left は 28px などの文字列を返し、offsetLeft は 28 の値を返します。取得した値を計算する必要がある場合は、
offsetLeft を使用すると便利です。

2. style.left は読み取り/書き込み可能ですが、offsetLeft は読み取り専用なので、div の位置を変更するには、style.left を変更するだけです。

3. style.left の値を事前に定義する必要があります。定義されていない場合、取得される値は空になります。
で定義されている場合は、HTML で定義する必要があります。 CSS では、style.left の値が空のままです。これは、最初に遭遇した問題です。style.left の値を常に取得できません。

offsetLeft は、div の位置を事前に定義しなくても取得できます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。