Question

J'ai deux articles que je flottais droit dans ma page XHTML. Malheureusement, lorsque je tente de faire le décalage du droit élément le plus ... il revient que la position de l'élément serait si elle ne flottait.

    <div id="Left style="float:right"></div>
    <div id="right" style="float:right"></div> 

    Using Jquery 
    <script type="text/javascript"> 
       var right = $("#right"); 
       alert(right[0].offsetLeft); 
    </script>

Est-ce que je dois faire quelque chose comme ça?

function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) 
    {
        do 
        {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;

        } while (obj = obj.offsetParent);
    }
}
Était-ce utile?

La solution

Il semble que vous essayez de trouver la position de la page.

Alors oui, vous pouvez utiliser une fonction comme:

function aGetElementsPagePosition (zElement)
{
    var iLeftOffset = zElement.offsetLeft; 
    var iTopOffset  = zElement.offsetTop;

    while (zElement = zElement.offsetParent)
    {
        iLeftOffset += zElement.offsetLeft;
        iTopOffset  += zElement.offsetTop;
    }

    return [iLeftOffset, iTopOffset];
}

Autres conseils

a fini par faire ceci:

    function findPos(obj) { 
      var pos = new Object();
      pos.x = pos.y = 0;        
      if (obj.offsetParent)  
      { 
        do  
        { 
          pos.x += obj.offsetLeft; 
          pos.y += obj.offsetTop; 
        } while (obj = obj.offsetParent); 
      } 
      return pos;
    } 

Ce que je fais pour obtenir la position d'un élément dans une page, d'une manière cross navigateur est:

var tempEl;
var myElement = document.getElementById('#someId');

//cool guys
x = myElement.offsetLeft;
y = myElement.offsetTop;

//IE 7-
if (myElement.hasLayout
    && myElement.offsetParent
    && myElement.offsetParent != document.body
    ) {

    x = 0;
    y = 0;
    tempEl = myElement;

    while (tempEl.parentNode) {

        if (tempEl.currentStyle.hasLayout) {//very important for floated elements
            x += (tempEl.offsetLeft) ? tempEl.offsetLeft : 0;
            y += (tempEl.offsetTop) ? tempEl.offsetTop : 0;
        }

        if (tempEl == document.body) {
            break;
        }

        tempEl = tempEl.parentNode;

    }

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top