Hlavný jazyk príkladu: CSS
Ostatné použité jazyky: HTML
Obťažnosť: 3/5
Obsah príkladu: Tvorba menu, použitie CSS flexbox, CSS vlastnosti display
, position
, pokročilé CSS selektory, pseudotrieda :hover
, pseudoelementy ::before
a ::after
.
Cieľom úlohy je vytvoriť roletové menu, ktoré bežne používajú desktopové aplikácie. Menu bude možné rozbaliť smerom dolu (drop-down menu) alebo smerom hore (drop-up menu). Fungovanie menu ukazuje nasledovný obrázok:
Menu musí spĺňať nasledovné podmienky:
- Prvá úroveň menu je vždy zobrazená na vrchu stránky.
- Ďalšie úrovne menu sú viditeľne iba, ak ich používateľ aktivuje kurzorom.
- Vizuálne treba indikovať, či dané menu obsahuje podmenu.
- Zvýraznite, ktoré položky menu sú aktivované.
- Jednotlivé podmenu zobrazte s odlišnou farbou pozadia, napr. budú tmavšie.
- Drop-down menu sa musí dať jednoduchou úpravou zmeniť na drop-up menu.
Počiatočný HTML dokument obsahuje menu zadefinované pomocou štruktúry elementov a vyzerá nasledovne:
<div id="menu">
<ul>
<li>
<span>Súbor</span>
<ul>
<li>
<span>Vytvoriť nový</span>
<ul>
<li><span>PDF</span></li>
<li><span>PPT</span></li>
<li><span>TXT</span></li>
<li><span>HTML</span></li>
</ul>
</li>
<li><span>Uložiť</span></li>
<li>
<span>Exportovať</span>
<ul>
<li>
<span>Web</span>
...
Všimnite si však, že samotné elementy ul
a li
definujú iba štruktúru menu. Textový obsah položky menu je definovaný ako obsah elementu span
. Vnorenie jednotlivých elementov ul
v li
definuje hierarchiu menu.
Pre riešenie použite výlučne iba jazyk CSS.