Listy w HTML: ul, ol i li
HTML ma dwie główne listy. <ul> (unordered list, lista nienumerowana) pokazuje punktory, a <ol> (ordered list, lista numerowana) pokazuje numery. Każdy element to <li> (list item).
Używaj <ol>, gdy kolejność coś znaczy (kroki, rankingi, spis treści), a <ul>, gdy nie. Czytniki ekranu ogłaszają obie jako listy z liczbą elementów, na przykład "list, 3 items", dlatego prawdziwa lista jest lepsza od linii zaczynających się od wpisanego ręcznie "•" albo "1.".
Lista może bezpośrednio zawierać tylko elementy <li>. Wszystko inne, łącznie z nagłówkami, akapitami i innymi listami, trafia do środka <li>.
Style punktorów
list-style-type na <ul> zmienia punktor. Pseudoelement ::marker stylizuje sam punktor lub numer, niezależnie od tekstu:
Wartość w postaci napisu używa tego tekstu jako punktora. "\2713 " to znak ptaszka i jedna spacja: pierwsza spacja jedynie kończy sekwencję \2713. ::marker przyjmuje tylko kilka właściwości, głównie color, font-size i inne właściwości czcionki, co wystarcza do popularnych "kolorowych punktorów" bez dodatkowego kodu.
Listy numerowane: liczby, litery i cyfry rzymskie
<ol> ma atrybuty do numeracji:
| Atrybut | Przykład | Wynik |
|---|---|---|
type | type="a" | a, b, c (działają też A, i, I i 1) |
start | start="5" | Zaczyna liczenie od 5 |
reversed | reversed | Liczy w dół |
value (na <li>) | <li value="10"> | Ten element ma numer 10, kolejne liczą dalej od niego |
type jest w porządku w HTML, bo litery mogą mieć znaczenie ("wybierz opcję B"). Przy zmianach czysto wizualnych to samo robi CSS list-style-type: upper-alpha albo lower-roman.
Listy zagnieżdżone
Podlista trafia do <li>, do którego należy, po tekście tego elementu. Przeglądarki zmieniają punktor na każdym poziomie: kółko pełne, potem puste, potem kwadrat.
Zwróć uwagę, gdzie jest </li>: element "Frontend" zamyka się dopiero po swojej podliście. Zamknięcie go przed <ul> umieszcza podlistę bezpośrednio w zewnętrznej <ul>, co jest niepoprawne, choć wygląda prawie tak samo.
Listy numerowane zagnieżdża się tak samo, a numeracja w każdej podliście zaczyna się od 1. Do numerów w stylu 1.1 i 1.2 potrzebne są liczniki CSS.
Listy opisowe: dl, dt i dd
Lista opisowa łączy terminy z ich opisami: słowniczek, szczegóły zamówienia, pary w stylu FAQ. <dt> to termin, a <dd> opis:
Termin może mieć kilka <dd>, a kilka <dt> może dzielić jeden <dd>. Przeglądarki domyślnie dodają wcięcie do <dd>; powyższa reguła margin je usuwa. Dla danych w kilku kolumnach lepiej sprawdzi się tabela.
Listy bez punktorów: menu i listy poziome
Menu nawigacyjne to listy linków. Usuń punktory przez list-style: none i wcięcie przez padding: 0, a potem ułóż elementy w rzędzie za pomocą flexboxa:
Dla czytników ekranu to nadal lista ("navigation, list, 3 items"). Jeden wyjątek: Safari z VoiceOver może pominąć znaczenie listy, gdy punktory są usunięte. Jeśli liczba elementów jest ważna dla twoich użytkowników, dodaj role="list" do <ul>.
Domyślne odstępy
Przeglądarki dają listom górny i dolny margines 1em oraz wcięcie padding-inline-start: 40px, w którym stoją punktory. Padding jest po stronie początku, więc w językach pisanych od prawej do lewej punktory i wcięcie same przechodzą na drugą stronę. Usuń padding, a punktory wyjdą poza pole listy, gdzie mogą zostać ucięte; zostaw trochę paddingu albo użyj list-style-position: inside.
Częste błędy
<li>bez listy nadrzędnej. Musi być wewnątrz<ul>,<ol>albo<menu>.- Lista zagnieżdżona poza swoim
<li>. Umieść podlistę wewnątrz elementu, do którego należy. - Tekst lub inne znaczniki bezpośrednio w
<ul>, na przykład<ul><p>Note</p><li>...</li></ul>. Przenieś je do<li>albo poza listę. - Ręczne wpisywanie punktorów lub numerów przez
•i<br>. Czytniki ekranu słyszą akapit, a nie listę. list-style: nonebezpadding: 0, co zostawia tajemnicze wcięcie na 40 pikseli.- Używanie
<ol>dla wyglądu. Jeśli kolejność nie ma znaczenia, użyj<ul>i ostyluj ją.
Najczęściej zadawane pytania
Jak zrobić wypunktowanie w HTML?
Użyj listy nienumerowanej: <ul> z jednym <li> na każdy punkt, na przykład <ul><li>Milk</li><li>Eggs</li></ul>. Przeglądarka rysuje punktor przed każdym elementem i dodaje wcięcie listy.
Czym różni się ul od ol?
<ul> to lista nienumerowana, pokazywana z punktorami, dla elementów, których kolejność nie ma znaczenia. <ol> to lista numerowana, pokazywana z numerami, dla kroków i rankingów, w których kolejność się liczy. Obie zawierają elementy <li>.
Jak usunąć punktory z listy w HTML?
Ustaw list-style: none na <ul> w CSS. Ustaw też padding-inline-start: 0 (albo padding: 0), żeby usunąć wcięcie, które przeglądarka dodaje dla punktorów.
Jak zacząć listę numerowaną od innej liczby?
Użyj atrybutu start: <ol start="5"> nadaje pierwszemu elementowi numer 5. reversed liczy w dół, a value na <li> ustawia numer tego elementu i kolejnych.
Jak zrobić listę zagnieżdżoną w HTML?
Umieść wewnętrzną <ul> lub <ol> wewnątrz <li> zewnętrznej listy, po tekście tego elementu. Lista wstawiona bezpośrednio do innej <ul>, między elementami <li>, jest niepoprawna.