Tananyag
5. lecke · Listák

2. modul · HTML alapok · 5. lecke

Listák

A lista az egyik legsokoldalúbb HTML-elem. Nemcsak felsorolásra való: menük, lépéssorok, termékrácsok, galériák — ezek mind listák a háttérben. Ha jól használod, a fél weboldalad ebből fog állni.

≈ 25 perc Előtte: 3–4. lecke 8 élő példa

Mit fogsz tudni a lecke végén

1Mire való a lista?

A lista összetartozó elemek csoportja. Amikor listát használsz, azt mondod a böngészőnek: „ezek egy halmazt alkotnak, és ennyi darab van belőlük".

Három listafajta van, és mindegyiknek megvan a maga feladata:

ElemNeveMikor válaszd?
<ul> Rendezetlen lista
unordered list
Ha a sorrend nem számít. Hozzávalók, tulajdonságok, menüpontok.
<ol> Rendezett lista
ordered list
Ha a sorrend számít. Recept lépései, telepítési útmutató, toplista.
<dl> Definíciós lista
description list
Ha név–érték párokat sorolsz. Fogalomtár, adatlap, GYIK.
A DÖNTÉS EGYETLEN KÉRDÉSE

„Ha megkevernéd a sorrendet, elromlana a jelentés?"

  • Igen → <ol> (a recept lépéseit nem cserélheted fel)
  • Nem → <ul> (a hozzávalókat igen)

2Rendezetlen lista: ul

Két elemből áll: a <ul> a lista kerete, a <li> (list item) pedig egy-egy tétel.

A legegyszerűbb lista
index.html
<h2>Hozzávalók</h2>

<ul>
  <li>1 kg burgonya</li>
  <li>6 tojás</li>
  <li>2 dl tejföl</li>
  <li>só, bors</li>
</ul>
Eredmény a böngészőben
A pontokat és a behúzást nem te csináltad — a böngésző alapértelmezése. CSS-sel bármikor átalakítod: más jel, más behúzás, vagy akár egyáltalán semmi.
A UL-BE CSAK LI KERÜLHET

A <ul> közvetlen gyereke csak <li> lehet. Ez hibás:

<ul>
  <p>Ez nem ide való!</p>
  <li>Ez rendben van</li>
</ul>

Ha bekezdést akarsz a listában, tedd a <li> belsejébe — erről a 7. pontban lesz szó.

3Rendezett lista: ol

Ugyanaz a felépítés, csak a keret más: <ol>. A tételek továbbra is <li>-k.

Számozott lépések
index.html
<h2>Elkészítés</h2>

<ol>
  <li>Főzd meg a burgonyát héjában.</li>
  <li>Hámozd meg és karikázd fel.</li>
  <li>Rétegezd a tepsibe.</li>
  <li>Süsd 30 percig 180 fokon.</li>
</ol>
Eredmény a böngészőben
A számokat sehol nem írtad le — a böngésző generálja őket. Ez a nagy előnye: ha beszúrsz egy lépést középre, minden szám magától újraszámozódik.
EZT NE

Soha ne gépeld be kézzel a számokat:

<ol>
  <li>1. Főzd meg a burgonyát.</li>
  <li>2. Hámozd meg.</li>
</ol>

Az eredmény 1. 1. Főzd meg… lenne — dupla számozás. És ha beszúrsz egy lépést, kézzel kellene átírni az összeset.

4Az ol attribútumai

A rendezett listának három attribútuma van, amivel a számozást szabályozod.

AttribútumMit csinál?
typeA számozás jelkészlete: 1 (alap), A, a, I, i
startMelyik számtól induljon. Alapból 1-től.
reversedVisszafelé számozzon. Nincs értéke — elég leírni a nevét.
Betűs, eltolt és fordított számozás
index.html
<ol type="A">
  <li>Első válasz</li>
  <li>Második válasz</li>
</ol>

<ol type="i" start="5">
  <li>Ötödik pont</li>
  <li>Hatodik pont</li>
</ol>

<ol reversed>
  <li>Arany</li>
  <li>Ezüst</li>
  <li>Bronz</li>
</ol>
Eredmény a böngészőben
A reversed egy logikai attribútum: nincs ="valami" része. Ha ott van, érvényes; ha nincs ott, nem az. Ilyenekkel az űrlapoknál is találkozol majd (required, checked).
TYPE VAGY CSS?

A type a megjelenést állítja, ami inkább CSS-feladat lenne (list-style-type, 18. lecke). A szabvány mégis megengedi, mert néha a számozásmód a tartalom része — például egy jogszabályban, ahol konkrétan a „c) pontra" hivatkoznak.

A start és a reversed viszont tartalmi, nem megjelenésbeli — azokat mindig itt add meg.

MIKOR JÓ A START?

Ha egy hosszú listát megszakítasz — például beszúrsz közé egy képet vagy egy magyarázó bekezdést —, a második <ol> újra 1-től indulna. A start="6" viszi tovább a számozást.

5Listák egymásba ágyazása

Egy lista tartalmazhat másik listát — így készül a többszintű felsorolás. Egyetlen szabály van, és ezt szinte minden kezdő elrontja először.

A BEÁGYAZÁS SZABÁLYA

A belső lista a <li> belsejébe kerül — nem a <li> mellé, és nem a </li> után. Gondolj bele: az alpont ahhoz a ponthoz tartozik, tehát benne van.

Helyes beágyazás
index.html
<ul>
  <li>Gyümölcsök
    <ul>
      <li>Alma</li>
      <li>Körte</li>
    </ul>
  </li>
  <li>Zöldségek
    <ul>
      <li>Sárgarépa</li>
    </ul>
  </li>
  <li>Tejtermékek</li>
</ul>
Eredmény a böngészőben
Figyeld meg a </li> helyét: a belső lista után áll. A „Gyümölcsök" tétel tehát a szövegből és a hozzá tartozó alpontokból áll. A böngésző a második szinten üres karikát használ — ez is csak alapértelmezés.
✔ A belső lista a li-n belül
<ul>
  <li>Gyümölcsök
    <ul>
      <li>Alma</li>
    </ul>
  </li>
</ul>
✘ A belső lista a li mellett
<ul>
  <li>Gyümölcsök</li>
  <ul>
    <li>Alma</li>
  </ul>
</ul>
ÉS EZ A CSALÓKA BENNE

A két változat a képernyőn majdnem ugyanúgy néz ki — ezért marad észrevétlen a hiba. De a jobb oldali érvénytelen HTML: a <ul> közvetlen gyereke csak <li> lehet.

Következmény: a validátor hibát jelez, a képernyőolvasó rosszul mondja be a szerkezetet, és CSS-sel is nehezebb lesz megcéloznod. Az, hogy „jól néz ki", nem jelenti azt, hogy jó.

KEVERHETED IS ŐKET

Egy <ol>-ba tehetsz <ul>-t és fordítva. Például: számozott főlépések, alattuk pontozott részletek. A szabály ugyanaz — a belső lista mindig a <li>-n belül van.

Kevert, többszintű lista
index.html
<ol>
  <li>Előkészítés
    <ul>
      <li>Melegítsd elő a sütőt</li>
      <li>Vedd elő a hozzávalókat</li>
    </ul>
  </li>
  <li>Sütés</li>
</ol>
Eredmény a böngészőben
A külső lista számoz, a belső pontoz. Ettől azonnal olvashatóbb egy hosszabb útmutató.

6Definíciós lista: dl

Ez a harmadik, kevésbé ismert listafajta. Név–érték párokhoz való: fogalom és magyarázata, kérdés és válasza, adat és értéke.

ElemMit jelent?
<dl>A lista kerete (description list)
<dt>A név, a fogalom (description term)
<dd>A hozzá tartozó leírás (description details)
Fogalomtár definíciós listával
index.html
<dl>
  <dt>HTML</dt>
  <dd>Jelölőnyelv, ami az oldal
      szerkezetét írja le.</dd>

  <dt>CSS</dt>
  <dd>Stílusnyelv, ami a megjelenést
      határozza meg.</dd>

  <dt>Böngésző</dt>
  <dd>A program, ami a kódból
      oldalt rajzol.</dd>
</dl>
Eredmény a böngészőben
Nincs pont és nincs szám: a dt balra igazítva, a dd pedig behúzva jelenik meg. Ez az alapértelmezett megjelenítés elég beszédes ahhoz, hogy CSS nélkül is használható legyen.
EGY NÉVHEZ TÖBB ÉRTÉK IS TARTOZHAT

Nem kötelező az egy-az-egyhez párosítás. Egy dt-hez tehetsz több dd-t (több jelentés), és több dt-hez egyetlen dd-t (szinonimák).

<dt>kutya</dt>
<dt>eb</dt>
<dd>Háziasított ragadozó emlős.</dd>
HOL LÁTOD EZT A GYAKORLATBAN?
  • Termékadatlapokon: Gyártó / Samsung, Kijelző / 6,1", Súly / 168 g
  • GYIK-oldalakon: kérdés és válasz
  • Fogalomtárakban, szószedetekben
  • Metaadatoknál: Szerző / Kovács Anna, Dátum / 2024. május 3.

7Mi fér el egy li-ben?

Sokan azt hiszik, egy listaelem csak rövid szöveg lehet. Szinte bármit betehetsz egy <li>-be: címsort, több bekezdést, képet, linket, táblázatot, másik listát.

Gazdag tartalom a listaelemekben
index.html
<ul>
  <li>
    <h3>Rakott krumpli</h3>
    <p>Klasszikus magyar étel,
    egyszerű hozzávalókból.</p>
    <p><strong>Idő:</strong> 60 perc</p>
  </li>

  <li>
    <h3>Lecsó</h3>
    <p>Nyári kedvenc paprikából
    és paradicsomból.</p>
    <p><strong>Idő:</strong> 35 perc</p>
  </li>
</ul>
Eredmény a böngészőben
Ebből lesz később a kártyás galéria: ugyanez a szerkezet, CSS-sel egymás mellé rendezve, keretekkel és árnyékkal. A HTML ugyanez marad — csak a megjelenés változik.
EZ A GONDOLKODÁSMÓD FONTOS

Amikor egy weboldalon ismétlődő dolgok sorát látod — termékek, hírek, csapattagok, képek —, az szinte biztosan egy <ul>, aminek minden <li>-je egy elem. Nem azért, mert pontokat akarunk, hanem mert tényleg egy lista.

9Tipikus hibák

HibaMiért baj, és mi helyette?
Kézzel beírt sorszámok <ol>-ban Dupla számozás lesz belőle. Hagyd a böngészőre — beszúrásnál magától újraszámoz.
A beágyazott lista a </li> után Érvénytelen HTML, pedig jól néz ki. Tedd a <li> belsejébe, a záró tag elé.
<p> közvetlenül a <ul>-ban A ul közvetlen gyereke csak li lehet. A bekezdés a li-be megy.
<ul> csak azért, hogy behúzást kapj A behúzás CSS-feladat (margin, padding). Listát csak akkor használj, ha tényleg lista.
<br> a listaelemek között Felesleges: a li amúgy is új sorban kezdődik. A térközt CSS-sel állítod.
Elfelejtett </li> A böngésző kijavítja, ezért észrevétlen marad — de beágyazott listánál már látványosan elromlik. Formázz Shift+Alt+F-fel.

Önellenőrző kérdések

Előbb válaszolj magadban, csak utána nézd meg a megoldást.

1. Egy recept hozzávalóit és elkészítési lépéseit írod le. Melyikhez milyen listát választasz és miért?

Hozzávalók → <ul>, mert a sorrendjük nem számít. Lépések → <ol>, mert ott a sorrend a jelentés része.

2. Mi a baj ezzel a kóddal?

<ul>
  <li>Autók</li>
  <ul>
    <li>Opel</li>
  </ul>
</ul>

A belső lista a <li> mellett van, nem benne. A <ul> közvetlen gyereke csak <li> lehet. Helyesen a belső <ul> az „Autók" tétel </li> záró tagja elé kerül. Csalóka, mert a képernyőn majdnem ugyanúgy néz ki.

3. Egy listát megszakítasz egy magyarázó bekezdéssel, majd folytatod. Hogyan éred el, hogy a számozás 7-tel folytatódjon?

A második listán: <ol start="7">.

4. Mi az a logikai attribútum, és melyiket láttad ebben a leckében?

Olyan attribútum, aminek nincs értéke: pusztán a jelenléte kapcsolja be. Ebben a leckében a reversed ilyen. Később még jön a required és a checked az űrlapoknál.

5. Termékadatlapot készítesz: Gyártó, Kijelző, Súly, Ár. Melyik listafajta illik ide?

Definíciós lista (<dl>): a tulajdonság neve <dt>, az értéke <dd>. Pontosan név–érték párokról van szó.

6. Egy navigációs menüt készítesz négy linkkel. Miért teszed listába ahelyett, hogy egymás mellé írnád a linkeket?

Mert a menüpontok egy összetartozó csoportot alkotnak, és ezt a jelentést a lista fejezi ki. A képernyőolvasó bemondja, hány elemű a lista, így a felhasználó tájékozódni és ugrani tud. Sima linkeknél ez az információ elveszne.

7. Szeretnél egy bekezdést kicsit beljebb húzni. Jó ötlet <ul>-be tenni?

Nem. A lista jelentést hordoz („ezek összetartozó tételek"), nem behúzóeszköz. A behúzás CSS-feladat: margin vagy padding.

10Összefoglalás

  1. <ul> = a sorrend nem számít · <ol> = a sorrend számít · <dl> = név–érték párok.
  2. A tételek mindig <li>-k, és a ul/ol közvetlen gyereke csak li lehet.
  3. A számokat és a pontokat a böngésző generálja — ne gépeld be őket.
  4. Az ol attribútumai: type (jelkészlet), start (kezdőérték), reversed (visszafelé).
  5. A beágyazott lista a <li> belsejébe kerül, a záró tag elé. Ez a leggyakoribb listahiba.
  6. Az ol és a ul szabadon keverhető egymásba.
  7. A dldtdd hármas adatlapokhoz, GYIK-hez, fogalomtárhoz való.
  8. Egy <li>-be szinte bármi belefér: címsor, bekezdés, kép, link, másik lista.
  9. Ha ismétlődő dolgok sorát látod egy oldalon, az valószínűleg lista — a menü is az.
  10. Lista csak jelentés miatt, soha nem behúzás miatt.