Autor Zpráva
Nevimto
Profil *
Mám stránku s několika DIVy, která se dynamicky mění. U jednoho DIVu bych potřeboval pomocí nějaké JS funkce načítat do proměnné aktuální absolutní souřadnici levého horního rohu daného DIVu, jde do vůbec nějak realizovat?
ShiraNai7
Profil
Upravil jsem funkci, co jsem před nějakou dobou napsal (vracela jen vertikální pozici). Vyzkoušej a uvidíš .. pro původní účel sloužila bez problému, tak snad bude OK.

Použití: getPosition(element[, offsetParent])
Příklad: getPosti
Vrací: pole s 2 prvky, na indexu 0 je pozice X, na indexu 1 je pozice Y

Pokud neuvedeš offsetParent, funkce vrací absolutní vzdálenost v okně.
Pokud uvedeš, tak vrací vzdálenost relativně k danému nadřazenému prvku.

function getPosition(elem, offsetParent)
{

    // do not check parent if window
    if(window === offsetParent || undefined === offsetParent) {
        offsetParent = null;
    }

    // determine position
    var y = 0, x = 0;
    do { y += elem.offsetTop; x += elem.offsetLeft; }
    while((elem = elem.offsetParent) && elem !== offsetParent);

    // return
    return [x, y];

}
HeWeR
Profil
var myDiv = document.getElementById("#div");

top = parseInt(myDiv.offsetTop) + "px";
left = parseInt(myDiv.offsetLeft) + "px";
ShiraNai7
Profil
HeWeRova verze jde použít, pokud nepotřebuješ ošetřit stavy, kdy máš element v kontejneru, co "resetuje" počítání souřadnic (např. position: absolute).
Str4wberry
Profil
(Jen pro ilustraci – proč je někdy potřeba ukecanější kód dopočítávající umístění rodiče.)
Chamurappi
Profil
Reaguji na Nevimta:
function getPosition(elem)
{
  var rect = elem.getBoundingClientRect();
  return [rect.left + document.documentElement.scrollLeft, rect.top + document.documentElement.scrollTop];
}

U jednoho DIVu bych potřeboval […]
Určitě potřeboval? Taková věc je málokdy doopravdy potřeba.
Nevimto
Profil *
ShiraNai7:
Tak to pomohlo.... a funguje to napříč snad všemi prohlížeči! Paráda. Díky moc

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0