Autor | Zpráva | ||
---|---|---|---|
Rossko Profil * |
#1 · Zasláno: 21. 2. 2013, 16:12:04
V skripte mi funguje window.location.hash ale to mi posunie nie len v DIV objekte (kde to robiť má) ale aj celú stránku, ako je možné to WINDOW nahradiť za ten DIV aby to šlo len v ňom?
Skúšal som document.getElementById('prispevky').location.hash ale to nešlo viete mi poradiť? je to vôbec možné? |
||
Chamurappi Profil |
#2 · Zasláno: 21. 2. 2013, 16:35:54
Reaguji na Rosska:
document.getElementById('prispevky').scrollTop = číslo; |
||
Rossko Profil * |
#3 · Zasláno: 21. 2. 2013, 17:36:12
práveže na niečo konkrétne, hento som skúšal že zistím pôvodnú veľkosť a novú veľkosť, odpočítam a scrolltop na tú pozíciu, lenže to mi nefungovalo dobre, lebo sa to načítava z databázy a nestíhalo to načítať a keď som dal setTimeout() tak to vyzeralo zle, že to skočilo hore a potom zase dole, nepekné
|
||
Jan Kupka Profil |
#4 · Zasláno: 22. 2. 2013, 10:13:39
Rossko:
Ahoj, těžko se radí, když není vidět konkrétní použití. Pokud načítáš obsah divu přes AJAX, tak odscrolluj (jak píše Chamurappi) až v callbacku, který se zavolá po dokončení AJAX requestu, pokud chceš scrollovat po načtení stránky, počkej nejdřív na DOMContentLoaded event (nejlépe pomocí nějaké knihovny, která řeší implementaci napříč prohlížeči). Pak nebudeš mít problém s tím, že se ti JS provede příliš brzy. |
||
Chamurappi Profil |
#5 · Zasláno: 22. 2. 2013, 10:28:16
Reaguji na Rosska:
Asi si to skákání nedovedu představit. Mohl bych vidět živou ukázku? Pozici, na kterou je zapotřebí najet, bych zjistil tak, že bych si změřil rodič.getBoundingClientRect().top a od té odečetl cílovýElement.getBoundingClientRect().top . To by mělo fungovat v jakémkoliv okmažiku, pokud existují rodič a cílovýElement . Kdybys měl uvnitř obrázky bez zadaných rozměrů, musel by sis počkat na onload (minimálně jejich). A samozřejmě, že pokud se změní proporce později, budeš muset provést výpočet znovu.
Reaguji na Jana Kupku: Čekat na DOMContentLoaded nemá smysl, protože stavba okolního DOMu proporce elementu neovlivňuje. „nejlépe pomocí nějaké knihovny, která řeší implementaci napříč prohlížeči“ Na takovou trivialitu nepotřebuje tahat tunu balastu. |
||
_es Profil |
#6 · Zasláno: 22. 2. 2013, 10:45:03
Rossko:
„práveže na niečo konkrétne“ Vyskúšaj scrollIntoView, no možno to bude mať rovnaký nechcený efekt. |
||
Jan Kupka Profil |
#7 · Zasláno: 22. 2. 2013, 12:48:53
Chamurappi:
Nevím, jak má kód na stránce uspořádaný, proto jsem to uvedl. Jinak knihovna != automaticky jQuery nebo něco podobného. |
||
Chamurappi Profil |
#8 · Zasláno: 22. 2. 2013, 13:08:03
Reaguji na Jana Kupku:
Chápu. Ale myslím, že by bylo obtížné (ne-li nemožné) kód uspořádat tak, aby skript nestačilo spustit za ukončovací značkou obalu a muselo se čekat na donačtení DOMu. Prvky umístěné později můžou ovlivnit pozici toho obalu, ale s vnitřkem už nic nehne ( overflow zaručuje imunitu).
Vlastně jedna možnost mě napadá — když by pod tím vším byl <style> , který přenastaví velikost písma uvnitř obalu. Ovšem to je dost netradiční scénář.
„knihovna != automaticky jQuery“ Já prskám preventivně :-) |
||
Časová prodleva: 11 let
|
0