Maison  >  Article  >  interface Web  >  Méthode d'utilisation de GetBoundingClientRect et traitement de compatibilité

Méthode d'utilisation de GetBoundingClientRect et traitement de compatibilité

php中世界最好的语言
php中世界最好的语言original
2018-04-13 09:35:565440parcourir

Cette fois, je vais vous expliquer comment utiliser getBoundingClientRect et le traitement de compatibilité. Quelles sont les précautions sur la façon d'utiliser getBoundingClientRect et le traitement de compatibilité. Ce qui suit est un cas pratique, jetons un coup d'œil.

Le rôle de getBoundingClientRect

getBoundingClientRect est utilisé pour obtenir l'ensemble de positions d'un certain élément HTML par rapport à la fenêtre d'affichage.

L'exécution de object.getBoundingClientRect(); obtiendra les attributs top, right, bottom, left, width et height de l'élément. Ces attributs sont renvoyés sous la forme d'un object.

getBoundingClientRect()

Cette méthode renvoie un objet rectangle contenant quatre propriétés : gauche, haut, droite et bas. Représente la distance entre chaque côté de l'élément et respectivement les côtés supérieur et gauche de la page.

var box=document.getElementById('box'); // 获取元素
alert(box.getBoundingClientRect().top); // 元素上边距离页面上边的距离
alert(box.getBoundingClientRect().right); // 元素右边距离页面左边的距离
alert(box.getBoundingClientRect().bottom); // 元素下边距离页面上边的距离
alert(box.getBoundingClientRect().left); // 元素左边距离页面左边的距离

Compatibilité des navigateurs

Il peut être pris en charge par ie5 et supérieur, mais il y a quelques points qui doivent être corrigés,

La gauche et le haut d'IE67 seront 2 pixels de moins et il n'y aura aucun attribut de largeur ou de hauteur.

Utilisez getBoundingClientRect pour écrire une méthode permettant d'obtenir l'ensemble de positions des éléments HTML par rapport à la fenêtre

<p id="test" style="width: 100px; height: 100px; background: #ddd;"></p>
<script>
 function getObjXy(obj){
  var xy = obj.getBoundingClientRect();
  var top = xy.top-document.documentElement.clientTop+document.documentElement.scrollTop,//document.documentElement.clientTop 在IE67中始终为2,其他高级点的浏览器为0
   bottom = xy.bottom,
   left = xy.left-document.documentElement.clientLeft+document.documentElement.scrollLeft,//document.documentElement.clientLeft 在IE67中始终为2,其他高级点的浏览器为0
   right = xy.right,
   width = xy.width||right - left, //IE67不存在width 使用right - left获得
   height = xy.height||bottom - top;
  return {
   top:top,
   right:right,
   bottom:bottom,
   left:left,
   width:width,
   height:height
  }
 }
 var test = getObjXy(document.getElementById('test'));
 alert("top:" + test.top + ", right:" + test.right + ", bottom:" + test.bottom + ", left:" + test.left);
</script>

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article, plus Veuillez prêter attention aux autres articles connexes sur le site Web php chinois !

Lecture recommandée :

Explication détaillée de l'effet parabolique de la petite boule de vue dans le panier

Explication détaillée de l'utilisation de composants dans Vue.js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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