Autor | Zpráva | ||
---|---|---|---|
Nevimto Profil * |
#1 · Zasláno: 28. 11. 2012, 19:35:20
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 |
#3 · Zasláno: 28. 11. 2012, 20:55:35
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 |
#5 · Zasláno: 28. 11. 2012, 21:02:43
(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 * |
#7 · Zasláno: 28. 11. 2012, 22:28:47
ShiraNai7:
Tak to pomohlo.... a funguje to napříč snad všemi prohlížeči! Paráda. Díky moc |
||
Časová prodleva: 11 let
|
0