Autor | Zpráva | ||
---|---|---|---|
RastyAmateur Profil |
#1 · Zasláno: 21. 1. 2016, 20:31:43
Dobrý večer,
docela mě zajímá, jak se dělá animovaná aktualizace stránky, jako je například zde na DJPW. Jde o to, že se po kliknutí na logo nové (aktualizované) příspěvky plynule přesunou nahoru, a vše pod tím se posune. Má někdo nějaký nápad, popř. odkaz na návod? Děkuji moc za každý nápad. |
||
Keeehi Profil |
#2 · Zasláno: 22. 1. 2016, 00:58:52
Aktualizace bez znovunačtení bude obyčejný AJAX. Když dojdou data, tak pak už to je jen o javascript, který plynule mění CSS hodnoty elementům.
|
||
Chamurappi Profil |
#3 · Zasláno: 22. 1. 2016, 02:16:22
Reaguji na RastyAmateura:
Zmíněný efekt jsem vytvářel já někdy před třemi roky. Z žádného návodu jsem nevycházel. Děje se cca toto: 1) Stáhnu si aktuální verzi téže stránky ze serveru, ale ještě ji nezobrazuji. 2) Změřím si pozice důležitých odkazů v tabulce metodou getBoundingClientRect a poznamenám si, která cílová adresa je jak vysoko.
3) Vyměním starou tabulku s odkazy za novou tabulku. 4) Vzápětí si opět změřím pozice odkazů metodou getBoundingClientRect .
5) Odkazy, které znám z minulé verze tabulky, relativně odpozicuji na jejich původní pozice (znám pixelový rozdíl původní a nové výšky). 6) Odkazy, které neznám, zprůhledním. (Nebo jim extrémně snížím letter-spacing , pokud prohlížeč nezná opacity .)
7) Odanimuji změnu výšky a průhlednosti do výchozího stavu. Nehýbe se s celými řádky, ale jen s elementy uvnitř řádků, protože uživatel může mít zapnutou zebru (jinak barevné sudé/liché řádky) a protože šoupání celých řádků mi tuším někde nechodilo. Na animace jsem si tenkrát napsal setInterval ovou smyčku, která mění stav podle uběhlého času. Plynulejší rozjetí a dojetí dělá krok = (-Math.cos(krok * Math.PI) / 2) + 0.5 (pro krok mezi 0 a 1 ). Dnes bych možná použil transition .
Drobnou nedokonalost mého skriptu vidím v tom, že se animují pouze řádky přítomné v nové tabulce. Pokud v té staré bylo něco, co v nové úplně chybí, tak to zmizí neanimovaně. Také je problém se znázorněním, že se nic nezměnilo – po nasazení tohoto skriptu do ostrého provozu nebyl efekt vodorovného zatřesení moc vlídně přijat a pochopen. A ještě trochu větší problém je s indikací stavu, že se něco změnilo, ale ne pořadí řádků. Když se třeba změní jen počet odpovědí u vrchního řádku, tak se neanimuje vlastně nic. |
||
RastyAmateur Profil |
#4 · Zasláno: 22. 1. 2016, 07:50:17
Keeehi:
Došlo mi, že to bude přes ajax. Šlo mi o to, ja udělám, aby se ty prvky zase pěkně vyrovnaly... Ale děkuji za reakci... Chamurappi: Děkuji moc. Já to sice nemám v plánu dělat, ale zajímalo mě to. Možná si to i vyzkouším. Ještě jednou děkuji. |
||
Časová prodleva: 9 let
|
0