Moderní tvorba webových aplikací

O webu

Skrývání a odkrývání textu

Rozbalení a sbalení obsahu po kliknutí.

5 minut

Pokud je na webu hodně textu, který nemusí návštěvníka tolik zajímat, může být vhodné takový text rozbalit až na vyžádání po kliknutí na tlačítko/odkaz. Ideální postup, jak zobrazit/skrýt obsah, je JavaScriptem pouze měnit CSS třídu a vše ostatní řešit kaskádovými styly. (Obdobným způsobem lze velice snadno i měnit vzhled a podobně.)

Řešení

Text ke skrytí.
  1. Vytvoříme element,
    <div class=schovat>
    	<div>Obsah</div>
    </div>
  2. pomocí CSS jeho obsah skryjeme
    .schovat div {display: none}
  3. a nyní jen stačí přes JS prohazovat třídu.
    function prohodit(element, prvniTrida, druhaTrida) {
    	element.className = element.className == prvniTrida ? druhaTrida : prvniTrida;
    }

    Co použít jako element

    • Je-li přepínací tlačítko (odkaz) poblíž obsahu (co se má skrývat/odkrývat), vše obalíme do společného <div>u, ke kterému se z tlačítka dostaneme přes this.parentNode.
      <button onclick="prohodit(this.parentNode, 'schovat', 'ukazat')">
      	Zobrazit/Skrýt
      </button>
    • Je-li tlačítko někde jinde, přidáme <div>u atribut id a použijeme document.getElementById("id").

Velkou výhodou změny třídy je to, že potom lze přes CSS pracovat i s přepínacím tlačítkem.

.schovat button {/* obsah je schovaný */}
.ukazat button {}

Plynulé skrývání a odkrývání

Skrývání a zobrazování obsahu může být díky animaci i hezky plynulé.

Vypnutý JavaScript

V případě vypnutého JavaScriptu by v každém případě měl obsah býti vidět.

Asi nejelegantnější je nastavovat pomocí JS třídu pro nějaký hodně nadřazený element.

<body>
<script> document.body.className+=' js' </script>

… a všechny skrývací akce začínat selektorem .js:

.js .schovat div {display: none}

Rozklikávání/přepínání částí stránky

Obdobným principem lze docílit přepínání jednotlivých skupin na stránce. Kdy kliknutí na nadpis ostatní položky skryje a zobrazí právě tu, na kterou bylo kliknuto.

HTML

HTML kód je celkem obyčejný, jednotlivé přepínané části jsou <div>y; obsah, který se má zjevit až po rozkliknutí, je rovněž v samostatném obalu, který se při změně třídy nadřazeného <div>u zviditelní.

CSS

V CSS se využívá třídy js, kterou má <body>, tj. všechny styly, které používá JavaScript, jsou takto prefixovány.

JavaScript

JS navěsí na nadpisy (značky <h3>) funkci, která nejprve projde všechny obalové <div>y a vymaže jim případnou třídu viditelnosti. Následně se tomu právě zakliknutému třída (className) pro zobrazení přiřadí.

Možné rozšíření

Má-li nějaká část být zobrazena rovnou při načtení stránky, stačí prosté přiřazení třídy viditelnosti pro obalový element dané skupiny, tj. <div class=show>.

Díky nastavování třídy show lze podle ní velice snadno vzhledově odlišit rozkliknutou část od ostatních.

Související články

Jak vkládat 3D objekty na web pomocí Three.js

Které formáty použít, jak vytvářet modely pomocí AI a kdy raději použít obrázek nebo video.

15 minut

CSS pseudo element ::marker

CSS pseudo element ::marker umožňuje stylovat odrážky seznamů

4 minuty

Zobrazení dlouhé URL

Jak zobrazit dlouhé URL v aplikaci, aby nerozbila layout.

6 minut

Převod písmen na VELKÁ a malá

Převedení textu na velká nebo malá písmena.

12 minut

Novinky e-mailem

Když budu mít něco opravdu zajímavého, můžu vám to poslat e-mailem

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků
2013–2025