Maison  >  Article  >  interface Web  >  js code d'implémentation pour obtenir l'élément relatif aux compétences position_javascript de la fenêtre

js code d'implémentation pour obtenir l'élément relatif aux compétences position_javascript de la fenêtre

WBOY
WBOYoriginal
2016-05-16 16:35:031185parcourir

JS obtient les attributs offsetTop, offsetLeft et autres de l'élément

obj.clientWidth //Obtenir la largeur de l'élément

obj.clientHeight //La hauteur de l'élément
obj.offsetLeft //La gauche
de l'élément par rapport à l'élément parent obj.offsetTop //Le haut
de l'élément par rapport à l'élément parent obj.offsetWidth //Largeur de l'élément
obj.offsetHeight //Hauteur de l'élément

Différence :

clientWidth = remplissage de largeur
clientHeight = rembourrage en hauteur
offsetWidth = bordure de remplissage en largeur
offsetHeight = bordure de remplissage en largeur
Le décalage est supérieur à la largeur de la bordure

//获取元素的纵坐标(相对于窗口)
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;
}

J'ai également écrit un article sur l'obtention de la position des éléments dans JS auparavant : JS obtient les attributs offsetTop, offsetLeft et d'autres attributs de l'élément. Nous pouvons obtenir la position de l'élément par rapport à la fenêtre via les attributs offsetTop et offsetLeft. , mais les attributs offsetTop et offsetLeft sont relatifs à l'élément parent est positionné, et généralement les éléments qui doivent obtenir la position ne sont pas dans la couche la plus externe, il est donc indispensable de parcourir les attributs liés au décalage de l'élément supérieur. L’efficacité devient alors un problème.

//获取元素的纵坐标(相对于窗口)
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;
}

Heureusement, le navigateur m'a fourni l'interface correspondante getBoundingClientRect. Cette méthode est apparue pour la première fois dans le navigateur IE, et les navigateurs ultérieurs ont également pris en charge cette méthode, et elle est plus complète, et IE ne peut obtenir que les attributs d'élément gauche, haut, bas. , et à droite, et plus tard, les navigateurs modernes peuvent également obtenir la largeur et le

de l'élément.

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

Ce qu'il faut noter ici, c'est que bottom est la distance entre le bas de l'élément et le haut de la fenêtre, et non le bas de la position en CSS par rapport au bas de la fenêtre. De même, l'attribut rihgt est le. distance entre la partie la plus à droite de l'élément et le côté gauche de la fenêtre.

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

Article original, veuillez l'indiquer lors de la réimpression : Réimprimé à partir du développement front-end

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn