ホームページ  >  記事  >  ウェブフロントエンド  >  ウィンドウの位置に関連する要素を取得するための js 実装コード_javascript スキル

ウィンドウの位置に関連する要素を取得するための js 実装コード_javascript スキル

WBOY
WBOYオリジナル
2016-05-16 16:35:031184ブラウズ

JS は要素の offsetTop、offsetLeft およびその他の属性を取得します

obj.clientWidth //要素の幅を取得します

obj.clientHeight //要素の高さ
obj.offsetLeft //親要素を基準とした要素の左側
obj.offsetTop //親要素を基準とした要素の先頭
obj.offsetWidth //要素の幅
obj.offsetHeight //要素の高さ

違い:

clientWidth = 幅パディング
clientHeight = 高さのパディング
offsetWidth = パディング境界線の幅
offsetHeight = パディング境界線の幅
オフセットが境界線の幅を超えています

//获取元素的纵坐标(相对于窗口)
function getTop(e){
  var offset=e.offsetTop;
  if(e.offsetParent!=null) offset+=getTop(e.offsetParent);
  return offset;
}
//获取元素的横坐标(相对于窗口)
function getLeft(e){
  var offset=e.offsetLeft;
  if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);
  return offset;
}

以前、JS での要素の位置の取得に関する記事も書きました。 JS は、要素の offsetTop、offsetLeft、およびその他の属性を取得します。 offsetTop 属性と offsetLeft 属性を通じて、ウィンドウに対する要素の位置を取得できます。ですが、offsetTop 属性と offsetLeft 属性は親要素に相対的に配置されており、通常、位置を取得する必要がある要素は最外層にないため、上位要素のオフセット関連の属性をトラバースすることが不可欠です。そうなると効率が問題になります。

//获取元素的纵坐标(相对于窗口)
function getTop(e){
var offset=e.offsetTop;
if(e.offsetParent!=null) offset+=getTop(e.offsetParent);
return offset;
}
//获取元素的横坐标(相对于窗口)
function getLeft(e){
var offset=e.offsetLeft;
if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);
return offset;
}

幸いなことに、ブラウザーは対応するインターフェース getBoundingClientRect を提供してくれました。このメソッドは IE ブラウザーで最初に登場しましたが、その後のブラウザーでもこのメソッドがサポートされ、IE は left、top、bottom の要素属性のみを取得できるようになりました。 、右、そしてそれ以降の最新のブラウザでも要素の幅と

を取得できます。

Chrome Firefox (Gecko) Internet Explorer Opera Safari
1.0 3.0 (1.9) 4.0 (Yes) 4.0

ここで注意すべき点は、bottom は要素の下部とウィンドウの上部の間の距離であり、ウィンドウの下部を基準とした CSS の位​​置の下部ではないということです。同様に、rihgt 属性は要素の右端とウィンドウの左側の間の距離。

var box = document.getElementById("box");
var pos = box.getBoundingClientRect();
box.innerHTML = "top:"+pos.top +
  "left:"+pos.left +
  "bottom:"+pos.bottom +
  "right:"+pos.right +
  "width:"+pos.width +
  "height:"+pos.height

元の記事、転載する場合は明記してください: フロントエンド開発から転載

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