Je dois calculer la condensée d'un objet DOM. J'ai déjà un code plutôt simple pour obtenir la compensation, mais il n'y a pas de propriété décalée JavaScript. Si j'ajoute le décalage et la vitrat offset, cela fonctionnera-t-il? Ou y a-t-il une meilleure façon?
4 Réponses :
Si vous souhaitez utiliser une bibliothèque JS, essayez les fonctionnalités suivantes du prototype JS http://api.prototypejs.org/dom/element/offset/ < / p>
C'est juste une autre façon de faire ce qui est déjà offsetleft, et ne me donne toujours pas la livraison offset. Comment ça va?
//Object references function getObject(id) { var object = null; if (document.layers) { object = document.layers[id]; } else if (document.all) { object = document.all[id]; } else if (document.getElementById) { object = document.getElementById(id); } return object; } //Get pixel dimensions of screen function getDimensions(){ var winW = 630, winH = 460; if (document.body && document.body.offsetWidth) { winW = document.body.offsetWidth; winH = document.body.offsetHeight; } if (document.compatMode=='CSS1Compat' && document.documentElement && document.documentElement.offsetWidth ) { winW = document.documentElement.offsetWidth; winH = document.documentElement.offsetHeight; } if (window.innerWidth && window.innerHeight) { winW = window.innerWidth; winH = window.innerHeight; } return{"width":winW, "height":winH} } //Get the location of element function getOffsetRight(elem){ element=getObject(elem) var width = element.offsetWidth var right = 0; while (element.offsetParent) { right += element.offsetLeft; element = element.offsetParent; } right += element.offsetLeft; right = getDimensions()["width"]-right right -= width return right } This is not bullet-proof but you can usually get the "offsetRight" by calling: getOffsetRight("[object.id]")
Quelques choix:
1) Si vous voulez "offsetRight" relatif à la fenêtre de la fenêtre, utilisez element.getboundingClientRect (). droite; code>
p> p>
2) Votre exemple est bon simplement souscrit simplement la largeur de l'élément de la largeur de l'élément de la largeur de l'élément + offsetleft. p>
3) enfin, pour être relatif au document, et pour accélérer la traversée (offsetparent): p>
dans cet exemple, je positionne un élément pseudo dérivé ci-dessous l'élément référencé, mais parce que j'évite quelques problèmes de délit de z-index et que je souhaite que l'élément soit référencé de la droite et de se développer à gauche, je devais l'ajouter à l'élément de corps et que vous obtenez le "offsetRight" de le parent d'origine. P>
ne peut pas être plus simple que ceci:
var offsetright = window.innerWidth - obj.offsetLeft - obj.offsetWidth
Une autre façon de calculer la livraison window.innerwidth - ollement.getboundingClientRect (). Droit code>
Que voulez-vous faire avec "offsetRight"? La raison "Gauche" et "TOP" sont que le haut à gauche de la fenêtre (ou une boîte de conteneur, vraiment) est fixe; Viewframe Stretching / Rétrécissement se produit (conceptuellement) à droite et au fond.
Je dois dessiner une DIV derrière les objets actuels, et je fais en cela est un droit de gauche à gauche. Je dois savoir où se termine l'objet (texte) sur la droite de savoir où positionner le bord droit de la DIV. Depuis que tout dans le Dom fonctionne de gauche à droite, ceci est un mal de tête.