9
votes

Besoin de calculer offsedRight en JavaScript

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? XXX


2 commentaires

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.


4 Réponses :


0
votes

Si vous souhaitez utiliser une bibliothèque JS, essayez les fonctionnalités suivantes du prototype JS http://api.prototypejs.org/dom/element/offset/ < / p>


1 commentaires

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?



3
votes
//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]") 

0 commentaires

5
votes

Quelques choix:

1) Si vous voulez "offsetRight" relatif à la fenêtre de la fenêtre, utilisez element.getboundingClientRect (). droite;

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.

3) enfin, pour être relatif au document, et pour accélérer la traversée (offsetparent):

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. xxx


0 commentaires

8
votes

ne peut pas être plus simple que ceci:

var offsetright = window.innerWidth - obj.offsetLeft - obj.offsetWidth


1 commentaires

Une autre façon de calculer la livraison window.innerwidth - ollement.getboundingClientRect (). Droit