Autor | Zpráva | ||
---|---|---|---|
skrytí Profil * |
#1 · Zasláno: 21. 11. 2019, 09:36:44
Dobrý den,
když si zobrazím a zkopíruju zdroj prvního způsobu animovaného skrytí obsahu na této stránce, tedy <div class="nezmenseny"> <style> .zmenseni p.zmensit {max-height: 2em; overflow: hidden; transition: max-height 1s} .zmenseny p.zmensit {max-height: 0} </style> <button onclick="prohodit(this.parentNode, 'zmenseny')">Zobrazit/skrýt změnou výšky</button> <p>Odstavec, který se nezmenší.</p> <p class="zmensit">Obsah plynule skrývaný.</p> <p>Odstavec, který se také nezmenší.</p> </div> skrytí obsahu po kliku na tlačítko mi nefunguje. Mohu poprosit o kompletní kód, u nějž by stačilo jej zkopírovat? |
||
Tomášeek Profil |
#2 · Zasláno: 21. 11. 2019, 10:43:37
skrytí:
„Mohu poprosit o kompletní kód, u nějž by stačilo jej zkopírovat?“ Kód, který lze zkopírovat, máš přímo na odkázaném webu. Tam ukázka evidentně funguje. Snaž se tedy pochopit, co děláš špatně. |
||
lionel messi Profil |
#3 · Zasláno: 21. 11. 2019, 11:20:37
skrytí:
„skrytí obsahu po kliku na tlačítko mi nefunguje.“ Lebo v úryvku nie je definovaná JS funkcia prohodit . Do kódu si doplň:
<script> function prohodit(element, trida) { element.className = element.className == trida ? "" : trida; } </script> |
||
RastyAmateur Profil |
#4 · Zasláno: 21. 11. 2019, 11:23:40
Tomášeek:
Na jeho obranu, v té ukázce opravdu není definovaná funkce prohodit . Navíc tento způsob řešení mi nepřijde úplně v pohodě.
skrytí: Od jQuery si můžeš vybrat i typ té animace: toggle, fadetoggle, slidetoggle. V examplech toho máš dost, kopíruj si. |
||
Tomášeek Profil |
#5 · Zasláno: 21. 11. 2019, 11:45:37
RastyAmateur:
„v té ukázce opravdu není definovaná funkce prohodit .“
Je ve zdrojáku. „Navíc tento způsob řešení mi nepřijde úplně v pohodě.“ Tak ono na tom nic špatného není, co se ti nezdá? Závislost na JS je stejně jako u tvého řešení, navíc netahám obrovský framework. Toggle (plynulé skrytí/odkrytí) i fade (změna opacity) jde dnes pohodlně a plynule docílit i v CSS. |
||
RastyAmateur Profil |
#6 · Zasláno: 21. 11. 2019, 12:11:37
Tomášeek:
Ale ne v té části, kterou autor zveřejnil. Být začátečník, také se divím, že to najednou nefunguje... Přijde mi divné, že to ovlivňuje jen nějaký odstavec uvnitř rodičovského elementu daného tlačítka. Raději bych to dělal tak, že se třeba té funkci dá i nějaký název třídy nebo selektor. Animace jde snadno udělat i bez jQuery, jak říkáš, ale opět si myslím, že když tazatel nedokáže takovou věc napsat ani najít sám, bude pro něj jednodušší tu knihovnu použít. Jde to s ní snadno a i ten kód je krátký, čitelný. |
||
skrytí Profil * |
#7 · Zasláno: 21. 11. 2019, 13:43:40
lionel messi:
Díky, ale pořád dělám něco špatně, viz živá ukázka. Mohu poprosit o kompletní kód? |
||
RastyAmateur Profil |
#8 · Zasláno: 21. 11. 2019, 14:06:20
skrytí:
živá ukázka Naimplementovat to do kódu už to zvládneš sám? Nebo nemáme udělat za tebe i to? Alespoň jsi ten kód projdi a zkus ho pochopit, ať z toho alespoň něco máš. |
||
Tomášeek Profil |
#9 · Zasláno: 21. 11. 2019, 14:20:16
RastyAmateur:
„opět si myslím, že když tazatel nedokáže takovou věc napsat ani najít sám, bude pro něj jednodušší tu knihovnu použít.“ Eh? V čem je to snažší, než v CSS přidat transition: xxx; ? Navíc ta transition už přímo v ukázce je.
„Jde to s ní snadno a i ten kód je krátký, čitelný.“ Nicméně to neřeší to, že se začátečník nenaučí kódovat, nýbrž bastlit. |
||
RastyAmateur Profil |
#10 · Zasláno: 21. 11. 2019, 14:34:04
Tomášeek:
U fadeToggle třeba v tom, že pomocí CSSek sice udělá jednoduchou animaci, ale ten element to jen zneviditelní, neskryje. Zůstane tam po ní na první pohled prázdné místo.
U slideToggle třeba v tom, že je těžké to hezky nastavit na element s neznámou výškou.
Obecně to, že s jQuery je to jeden jediný řádek kódu, zatímco normálně musíš vytvořit jednu (a více) CSS třídu, které se nastaví potřebná CSS vlastnosti a do toho ještě nějaký JS kód, který se bude starat o to, jestli dané elementy ty třídy mají. Když bych vzal ukázku od [#3] lionel messi, tak pak se třeba musí ještě postarat o případy, kdy má element více tříd a on chce měnit jen jednu. Jako já s tebou souhlasím, že to jde udělat podle CSSek, že to není moc složité a že je to mnohem efektivnější. Ale tvrdím to, že pro začátečníka je jQuery naprosto super, může to použít i jinde než jen v jednom případě, je to snadno čitelné, má to super dokumentaci, a podobně. |
||
Časová prodleva: 2 měsíce
|
|||
Kryton Profil * |
#11 · Zasláno: 16. 1. 2020, 17:37:10
No díky za užitečné informace dlouho sem si s tím lámal hlavu.
|
||
Časová prodleva: 4 roky
|
0