HTML

Web o webu

Seznamy

Styly pro seznamy

Jelikož jsou seznamy tvořeny dvojicí html značek, můžeme zapsat vlastnosti u značky seznamu nebo u značky položky. Protože značka položky (li) je stejná jak pro číslovaný, tak i nečíslovaný seznam, můžeme v její definici zapsat např. vlastnosti písma. Typ číslování či odrážky však musíme zapsat v definici stylu značky seznamu (ol nebo ul).

Ukázka typu odrážky a číslování

<ul>
  <li>Pyramidy v Gíze</li>
  <li>Visuté zahrady</li>
  <li>Artemidin chrám</li>
</ul>

ul {
  list-style-type: square;
}
  • Pyramidy v Gíze
  • Visuté zahrady
  • Artemidin chrám
<ol>
  <li>Pyramidy v Gíze</li>
  <li>Visuté zahrady</li>
  <li>Artemidin chrám</li>
</ol>

ol {
  list-style-type: lower-roman;
}
  1. Pyramidy v Gíze
  2. Visuté zahrady
  3. Artemidin chrám

Styl písma můžeme zapsat jak u značky seznamu tak u značky položky, výsledek bude stejný. Definujeme-li však např. horní okraj (margin-top) pro značku seznamu, bude tento nad celým seznamem (pouze nad prvním řádkem). Definujeme-li jej však pro položky seznamu (li), bude nad každou položkou a vytvoří tak rozteč mezi řádky seznamu.

Ukázka aplikace vlastností na celý seznam či na jednotlivé položky

ul {
  margin-top: 5px;
  background-color: chocolate;
}
  • Pyramidy v Gíze
  • Visuté zahrady
  • Artemidin chrám
li {
  margin-top: 5px;
  background-color: chocolate;
}
  • Pyramidy v Gíze
  • Visuté zahrady
  • Artemidin chrám

Styly pro vnořené seznamy

Vnořený seznam je vždy vložen v položce hlavního seznamu. Definici jeho stylu můžeme tedy zapsat:

li ul {   /* vnořený nečíslovaný seznam */
  list-style-image: url(obrazek_odrazky.png);
}
li ol {   /* vnořený číslovaný seznam */
  list-style-type: lower-alpha;
}

Základní css vlastnosti pro seznamy

Vlastnosti písma, barvy a okraje jsou stejné jako pro nadpisy a odstavce.

Typ číslování
list-style-type list-style-type: decimal; list-style-type: upper-alpha; list-style-type: upper-roman;
list-style-type: lower-alpha; list-style-type: lower-roman;
Typ odrážky
list-style-type list-style-type: disc; list-style-type: circle; list-style-type: square;
Vlastní typ odrážky
list-style-image list-style-image: url(puntik.png);

Seznamy odkazů - roletkové menu

Odkazy (tagy a) jsou vloženy do položek (li) nečíslovaného seznamu (ul). Vyjížděcí podmenu jsou vnořené nečíslované seznamy s odkazy podmenu. Pro funkčnost je nezbytné správné umístění podseznamu do položky hlavního seznamu - viz předchozí kapitola Seznamy - HTML.

Pomocí css vlastností jsou podmenu skryty a jsou zobrazovány při najetí myší na položku hlavního seznamu.

Kontextuální definice stylů vycházející z html struktury

Seznamy menu a podmenuenu

Ukázka css stylů - viz třetí z následujících ukázek roletkových menu

Pro zápis stylů je zde využita kontextuální definice vycházející ze struktury vnořených seznamů - viz výše.
Místo kontextuální definice lze také použít třídy stylů.

/* blok nav - pevná výška s přetékáním obsahu,
   blok nav jako překryvná vrstva pomocí absoluní pozice a z-index */
nav {height: 40px; overflow: visible; position: absolute; z-index: 2;
     padding: 0px 6px; background-color: #FFCC00;}
nav a {display: block; width: 130px; height: 16px; padding: 6px;
       text-align: center; background-color: #FFFFCC; color: #660000; font-size: 12px;}
nav a:hover {color: #AA1F0C;}
/* seznamy menu i podmenu - bez odsazení, bez odrážek */
nav ul {margin: 0px; padding: 0px; list-style-type: none;}
nav li {margin: 0px;}
/* položky hlavního menu - vedle sebe pomocí obtékání */
nav > ul > li {display: block; float: left; margin: 5px ; border: 1px solid #FFA500;
               border-radius: 5px; transition: 2s;}
nav > ul > li > a {border-radius: 5px; transition: 2s;}
nav > ul > li > a:hover {border-radius: 5px 5px 0px 0px; transition: 0s;}
/* podmenu - protažení paddingu a spocní rámeček při najetí na položku hlavního menu */
nav > ul > li > ul {border-bottom: 0px solid #FFA500; border-radius: 0px 0px 5px 5px;
                    background-color: #FFFFCC;  box-shadow: 0px 2px 2px #CC6600;}
nav > ul > li:hover > ul {padding-bottom: 10px; border-bottom-width: 6px;
                          transition: padding 0.5s, border 1s;}
/* skrytí a zobrazení položek podmenu pomocí nulové výšky */
nav > ul > li > ul > li {height: 0px; overflow: hidden;}
nav > ul > li:hover > ul > li {height: 30px; transition: 1s;}
/* blok article pod nav - větší horní padding kvůli absolutní pozici nav */
article {padding: 60px 15px 10px 15px;}

Ukázky roletkového menu s plynulým rozbalením podmenu

Následující ukázky menu mají vyjížděcí podmenu u položek Pyramidy, Visuté zahrady, Artemidin chrám a Diova socha. Položka Mausoleum nemá podmenu.

V této ukázce bylo skrytí podmenu řešeno pomocí změny zobrazení (display:none; -> display:block;)

Změnu display nelze provést s přechodovým efektem (transition), proto je zde přidána ještě změna spodního odsazení a dolního rámečku podmenu (padding-bottom: 0px; border-bottom: 0px solid #AA1F0C; -> padding-bottom: 10px; border-bottom-width: 6px;) s časováním (transition: 1s;).

V této ukázce bylo skrytí podmenu řešeno pomocí nulové výšky položek podmenu (height:0px; overflow:hidden; -> height:30px;). Položky podmenu se tak postupně rozbalují.

Následující ukázka je shodná s předchozí, jsou přidány zakulacené rohy.

Následující ukázka má odkazy podmenu jako samostatná tlačítka, jsou zde využity barevné přechody a stíny.

Změny jsou bez časování (barevné přechody nelze časovat).

Následující ukázka má odkazy ve tvaru záložek.

Při najetí myší zde dochází nejen k rozbalení podmenu, ale také k jeho posunutí nahoru. Posunutí je různé podle počtu položek podmenu.

Následující ukázka ponechává podseznamům odrážky a využívá změny jejich tvaru při najetí myší.

Nejen hlavní položky menu, ale i položky podmenu mohou být uspořádány v řádku.

Vyjetí podmenu je bez časování, s časováním je změna barvy písma, pozadí a rámečku.

Podmenu může využít celou šířku, položky mohou být doplněny obrázky apod. Další inspiraci najdete v kapitole Cvičení.

Sloupcové seznamy odkazů - vyjíždějící menu

Obdobně jako předchozí řádkové vyjíždějící menu můžeme pomocí vnořených seznamů odkazů vytvořit sloupcové menu, jehož podpoložky se budou vysouvat doprava.

Ukázka vyjíždějícího menu

Stejně jako u rolekového menu, je i zde potřeba zajistit překryvnost podmenu přes tento text pomocí z-index a absolutní pozice.

Skrytí podmenu je řešeno pomocí nulové šířky odkazů položek podmenu:
(width: 0px; padding: 5px 0px; overflow: hidden; -> width: 150px; padding: 5px 30px;)

Časování (transition) je u odkazů podmenu nastaveno na 0s, ale po najetí myší na položku se transition odkazů podmenu mění na 1s. Díky tomu podmenu vyjíždí pomalu, ale zajíždí rychle.