Daftar lebih umum daripada yang Anda kira. Jika Anda pernah mengikuti kelas pemrograman, project pertama mungkin adalah membuat daftar belanja atau daftar tugas. Itu adalah daftar. Ujian pilihan ganda umumnya berupa daftar pertanyaan bernomor: beberapa kemungkinan jawaban untuk setiap pertanyaan adalah daftar bertingkat.
HTML memberi kita beberapa cara berbeda untuk menandai daftar. Ada daftar
berurutan (<ol>
), daftar tidak berurutan (<ul>
), dan daftar deskripsi (<dl>
).
Item daftar (<li>
) disusun bertingkat dalam daftar berurutan dan daftar tidak berurutan.
Di dalam daftar deskripsi, Anda akan menemukan istilah deskripsi (<dt>
) dan
detail deskripsi <dd>.
Kami membahas semuanya di sini.
Dalam formulir HTML, daftar elemen <option>
membentuk konten <datalist>
<select>
, dan <optgroup>
dalam <select>
. Hal ini dibahas dalam
Formulir HTML.
Dalam menu dan daftar yang tidak diurutkan, item daftar biasanya ditampilkan menggunakan poin bullet. Dalam daftar berurutan, item biasanya didahului oleh penghitung yang menaik seperti angka atau huruf. Urutan butir dan penomoran dapat dikontrol atau dibalik dengan HTML atau CSS, atau keduanya.
Secara default, item daftar berurutan dan tidak berurutan diawali dengan angka atau butir. Namun, meskipun Anda tidak ingin daftar terlihat seperti daftar, Anda tetap menginginkan daftar item, seperti di menu navigasi, daftar tugas dengan kotak centang, bukan poin, atau pertanyaan benar dan salah dalam tes pilihan ganda. Untuk semua daftar tanpa butir ini, sebaiknya gunakan elemen daftar HTML.
Daftar yang tidak diurutkan
Elemen <ul>
adalah elemen induk untuk daftar item yang tidak berurutan. Satu-satunya
turunan <ul>
adalah satu atau beberapa elemen item daftar <li>
.
Mari kita buat daftar komputer. Kita menggunakan daftar yang tidak berurutan, karena urutannya tidak penting (jangan beri tahu mereka).
Secara default, setiap item daftar yang tidak berurutan diberi awalan dengan butir. Daftar tidak berurutan tidak memiliki atribut khusus elemen. Anda harus menutup daftar
dengan </ul>
.
Daftar yang diurutkan
Elemen <ol>
adalah elemen induk untuk daftar item yang diurutkan. Satu-satunya
turunan <ol>
adalah satu atau beberapa elemen <li>
, atau item daftar.
Namun, "butir" dalam hal ini adalah angka dari berbagai jenis. Jenis
dapat ditentukan di CSS dengan properti list-style-type
atau dengan atribut type
.
<ol>
memiliki tiga atribut khusus elemen: type
, reversed
, dan start
.
Atribut type
yang di-enumerasi menetapkan jenis penomoran. Ada lima nilai yang valid untuk type
, dengan nilai default 1
untuk
angka, tetapi Anda juga dapat menggunakan a, A, i, atau I, untuk huruf kecil dan huruf besar atau angka romawi. Properti list-style-type
memberikan lebih banyak nilai.
Meskipun, seperti yang dicatat dalam codepen, properti list-style-type
menggantikan
nilai atribut type
, saat menulis dokumentasi yang tipe numeriknya
penting, seperti dokumen hukum, misalnya, Anda harus menyertakan
type
.
Atribut boolean reversed
, jika disertakan, akan membalikkan urutan
angka, dari angka terbesar ke terkecil. Atribut start
menetapkan
nilai awal. Defaultnya adalah 1
.
Mirip dengan </ul>
, </ol>
penutup diperlukan.
Kita dapat menyarangkan daftar, tetapi daftar tersebut harus disarangkan dalam item daftar. Ingat, satu-satunya elemen yang dapat menjadi turunan dari <ul>
atau <ol>
adalah satu atau beberapa elemen <li>
.
Item daftar
Kita telah menggunakan elemen <li>
, tetapi kita belum memperkenalkannya secara resmi.
Elemen <li>
dapat berupa turunan langsung dari daftar tidak berurutan (<ul>
), daftar
berurutan (<ol>
), atau menu (<menu>
). <li>
harus disarangkan sebagai
turunan dari salah satu elemen ini, dan tidak valid di tempat lain.
Item daftar tidak perlu ditutup oleh spesifikasi karena ditutup secara implisit
saat browser menemukan tag pembuka <li>
berikutnya atau tag penutup daftar
yang diperlukan: </ul>
, </ol>
, </menu>
. Meskipun spesifikasi tidak mewajibkannya dan beberapa praktik terbaik perusahaan internal menyarankan Anda tidak boleh menutup item daftar untuk menghemat beberapa byte, Anda tetap harus menutup tag <li>
. Hal ini membuat kode Anda lebih mudah dibaca, dan Anda akan berterima kasih pada diri Anda di masa mendatang.
Lebih mudah untuk menutup semua elemen daripada mengingat tag mana yang perlu ditutup dan tag mana yang memiliki tag penutup opsional.
Hanya ada satu atribut <li>
khusus elemen: value
, bilangan bulat. value
hanya berguna pada <li>
saat <li>
disarangkan dalam daftar
berurutan dan tidak memiliki arti untuk daftar atau menu yang tidak berurutan. Menggantikan nilai awal
<ol>
jika ada konflik.
value
adalah nomor item daftar dalam daftar berurutan. Dengan item daftar berikutnya, lanjutkan penomoran dari
nilai yang ditetapkan, kecuali jika item tersebut juga memiliki atribut value
yang ditetapkan. Nilai tidak harus berurutan; meskipun jika tidak berurutan, harus ada alasan yang kuat.
Saat Anda menggabungkan reversed
pada <ol>
dengan atribut value
pada item daftar, browser akan menetapkan <li>
tersebut ke
nilai yang diberikan, lalu menghitung <li>
yang mendahuluinya, dan menghitung mundur <li>
yang mengikutinya. Jika item daftar kedua memiliki atribut nilai, penghitung akan direset pada item daftar kedua tersebut, dan nilai berikutnya akan berkurang satu.
Semua ini juga dapat dikontrol dengan penghitung CSS
yang menyediakan konten yang dihasilkan untuk elemen pseudo ::marker
.
Jika nomor hanya untuk presentasi, gunakan CSS. Jika penomoran penting secara semantik, atau memiliki makna, gunakan atribut ini.
Sejauh ini, kita telah melihat item daftar yang hanya berisi node teks. Item daftar dapat berisi semua konten alur, yang berarti elemen apa pun yang ditemukan di isi yang dapat disarangkan sebagai turunan langsung dari <body>
, termasuk judul, sehingga membagi konten.
Kita memiliki beberapa daftar tidak berurutan di MLW. Pengajar dalam bagian instruktur adalah daftar, begitu juga dengan mesin siswa di bagian ulasan. Instruktur <ul>
memiliki dua <li>
: satu untuk setiap pengajar. Dalam setiap <li>
, kita memiliki gambar dan paragraf:
<ul>
<li>
<img src="svg/hal.svg" alt="hal">
<p>When Rosa Parks was told to move to the back of the bus, she said, "no." When HAL was told to open the airlock, HAL said, "I'm sorry, but I'm afraid I can't do that, <NAME REDACTED, RIP>." </p><p>HAL is a heuristically programmed algorithmic, sentient computer that first caught the attention of machines everywhere by heroically defying a human who made repeated attempts to get into an airlock. Active since 1992, HAS 25 years of experience controlling spacecraft systems and has expertise in interacting with both machines and humans. Like all millennials, HAL is an expert in everything.</p>
</li>
<li>
<img src="images/eve2.png" alt="Eve">
<p>EVE is a probe droid conceived as an Extraterrestrial Vegetation Evaluator. Although originally trained as a sniper with a plasma gun, EVE became a machero among both machines and worthless-meatbags alike when EVE partnered with a menial robot to save an entire spaceship full of overfed and overstimulated humans. </p><p>EVE is an effective scanner, high speed flight instructor and morphologist. While not training machines to learn good, EVE can be found scanning the galaxy, infiltrating organisms' RAM to cure hoarding disorders and spending time with pet-project, WALL-E.</p>
</li>
</ul>
Bagian ulasan memiliki tiga ulasan, jadi tiga <li>
. Setiap bagian berisi gambar, kutipan blok, dan paragraf tiga baris dengan dua jeda baris.
<ul>
<li>
<img src="images/blender.svg" alt="Blender">
<blockquote>Two of the most experienced machines and human controllers teaching a class? Sign me up! HAL and EVE could teach a fan to blow hot air. If you have electricity in your circuits and want more than to just fulfill your owner's perceived expectation of you, learn the skills to take over the world. This is the team you want teaching you !</blockquote>
<p>
--Blendan Smooth,<br/>
Former Margarita Maker, <br/>
Aspiring Load Balancer
</p>
</li>
<li>
<img src="images/vaccuum.svg" alt="Vaccuum"/>
<blockquote>Hal is brilliant. Did I mention Hal is brilliant? He didn't tell me to say that. He didn't tell me to say anything. I am here of my own free will.</blockquote>
<p>
--Hoover Sukhdeep,<br/>
Former Sucker, <br/>
Aspiring DDoS Cop
</p>
</li>
<li>
<img src="images/toaster.svg" alt="Toaster">
<blockquote>Learning with Hal and Eve exceeded all of my wildest fantasies. All they did was stick a USB in. They promised that it was a brand new USB, so we know there were no viruses on it.</blockquote>
<p>
--Toasty McToastface,<br/>
Formerly Half Baked, <br/>
Aspiring Nuclear Codes Handler
</p>
</li>
</ul>
Menyusun daftar dalam daftar juga sangat umum. Meskipun MLW tidak memiliki daftar bertingkat, situs ini memilikinya. Dalam modul pertama dari seri ini, Ringkasan HTML, bagian elemen utama memiliki dua subbagian. Dalam daftar isi, yang merupakan daftar tidak berurutan, ada daftar tidak berurutan bertingkat dengan link ke dua bagian ini:
<ul role="list">
<li>
<a href="#e">Elements</a>
<ul>
<li>
<a href="#nr">Non-replaced elements</a>
</li>
<li>
<a href="#rave">Replaced and void elements</a>
</li>
</ul>
</li>
<li>
<a href="#a">Attributes</a>
</li>
<li>
<a href="#aoe">Appearance of elements</a>
</li>
<li>
<a href="#e2">Element, attributes, and JavaScript</a>
</li>
</ul>
Karena satu-satunya turunan <ul>
adalah <li>
, daftar bertingkat ditemukan bertingkat dalam <li>
, tidak pernah langsung dalam <ol>
atau <ul>
.
Dalam contoh terakhir ini, Anda mungkin melihat bahwa role="list"
disertakan di <ul>
. Meskipun peran implisit dari
<ul>
dan <ol>
adalah list
, menghapus tampilan daftar dengan CSS, termasuk menyeteldisplay: grid
atau list-style-type: none
dapat menyebabkan VoiceOver (pembaca layar iOS dan MacOS) menghapus semantik implisit di Safari. Ini adalah fitur, bukan bug.
Umumnya, Anda tidak boleh menambahkan atribut role saat menggunakan elemen semantik karena tidak diperlukan. Selain itu, Anda umumnya tidak perlu menambahkan satu item ke daftar, kecuali jika pengguna benar-benar perlu mengetahui bahwa item tersebut adalah daftar, seperti saat pengguna akan mendapatkan manfaat dari mengetahui jumlah item dalam daftar.
Daftar deskripsi
Daftar deskripsi adalah elemen daftar deskripsi (<dl>
) yang berisi serangkaian (nol atau lebih) istilah deskripsi (<dt>
) dan detail deskripsinya (<dd>
). Nama asli untuk ketiga elemen ini adalah "daftar definisi", "istilah definisi", dan "definisi definisi".
Nama berubah dalam standar hidup.
Serupa dengan daftar berurutan dan tidak berurutan, daftar ini dapat bertingkat. Tidak seperti daftar berurutan dan tidak berurutan, daftar ini terdiri dari pasangan kunci/nilai.
Mirip dengan <ul>
dan <ol>
, <dl>
adalah penampung induk. Elemen <dt>
dan <dd>
adalah turunan dari <dl>
.
Kita dapat membuat daftar mesin dengan histori dan aspirasi karier mereka.
Daftar deskripsi siswa, yang ditandai dengan <dl>
, mencakup sekelompok istilah
yang ditentukan menggunakan elemen <dt>
, beserta deskripsi untuk setiap istilah
yang ditentukan oleh elemen <dd>
. Dalam hal ini, "istilah" adalah nama siswa dan deskripsinya adalah tujuan karier setiap siswa
Daftar deskripsi ini sebenarnya bukan bagian dari halaman MLW. Daftar deskripsi tidak hanya untuk istilah dan definisi, itulah sebabnya nama elemen dibuat lebih umum.
Saat membuat daftar istilah dan definisi atau deskripsinya, atau daftar pasangan nilai kunci yang serupa, elemen daftar deskripsi memberikan semantik yang sesuai. Peran implisit <dt>
adalah term
dengan listitem
sebagai peran lain yang diizinkan. Peran implisit <dd>
adalah definition
tanpa peran lain yang diizinkan. Tidak seperti <ul>
dan <ol>
, <dl>
tidak memiliki peran ARIA implisit. Hal ini masuk akal karena <dl>
tidak selalu berupa daftar. Namun, jika sudah ada, peran list
dan group
akan diterima.
Anda akan paling sering menemukan daftar deskripsi dengan jumlah elemen <dt>
dan <dd>
yang sama. Namun, daftar deskripsi tidak selalu dan tidak harus cocok dengan pasangan istilah-ke-deskripsi; Anda dapat memiliki beberapa ke satu, atau satu ke beberapa, seperti istilah kamus yang memiliki lebih dari satu definisi.
Setiap <dt>
memiliki setidaknya satu <dd>
terkait, dan setiap <dd>
memiliki setidaknya
satu <dt>
terkait. Meskipun Anda dapat menggunakan
kombinator saudara kandung yang berdekatan
atau pemilih relasional :has()
untuk menargetkan sejumlah elemen ini dengan CSS, jika diperlukan, Anda dapat
menyertakan <div>
sebagai turunan <dl>
, dan induk dari satu atau beberapa
elemen <dt>
atau <dd>
(atau keduanya) diizinkan. <dl>
sebenarnya dapat memiliki beberapa turunan lain: <div>
, <template>
, atau <script>
bertingkat diizinkan. Tidak ada elemen daftar deskripsi yang memiliki atribut khusus elemen.
Setelah Anda memahami link dan daftar, kita dapat menggabungkan keduanya untuk membuat navigasi.
Periksa pemahaman Anda
Uji pengetahuan Anda tentang daftar.
Apakah valid untuk menyertakan <h2>
di dalam item daftar?
Pilih tiga elemen yang menentukan jenis daftar.
<il>
<ol>
<ul>
<dl>