Ini telah mengganggu saya untuk sementara waktu, dan saya bertanya-tanya apakah ada konsensus tentang bagaimana melakukan ini dengan benar. Saat saya menggunakan daftar HTML, bagaimana cara menyertakan header untuk daftar secara semantik?
Salah satu opsinya adalah ini:
<h3>Fruits I Like:</h3>
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
tetapi secara semantik, <h3>
tajuk tidak secara eksplisit dikaitkan dengan<ul>
Opsi lainnya adalah ini:
<ul>
<li><h3>Fruits I Like:</h3></li>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
tetapi ini tampaknya agak kotor, karena judulnya sebenarnya bukan salah satu item daftar.
Opsi ini tidak diperbolehkan oleh W3C:
<ul>
<h3>Fruits I Like:</h3>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
sebagai <ul>
's hanya dapat berisi satu atau lebih <li>
' s
"Judul daftar" lama <lh>
paling masuk akal
<ul>
<lh>Fruits I Like:</lh>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
tapi tentu saja ini bukan bagian resmi dari HTML
Saya pernah mendengarnya menyarankan agar kami menggunakan <label>
seperti formulir:
<ul>
<label>Fruits I Like:</label>
<li>Apples</li>
<li>Bananas</li>
<li>Oranges</li>
</ul>
tapi ini agak aneh dan toh tidak akan valid.
Sangat mudah untuk melihat masalah semantik saat mencoba memberi gaya pada tajuk daftar saya, di mana saya akhirnya harus meletakkan <h3>
tag saya di bagian pertama <li>
dan menargetkannya untuk penataan dengan sesuatu seperti:
ul li:first-of-type {
list-style: none;
margin-left: -1em;
/*some other header styles*/
}
kengerian! Tapi setidaknya dengan cara ini saya bisa mengontrol keseluruhan <ul>
, heading dan semuanya, dengan memberi style pada ul
tag.
Apa cara yang benar untuk melakukan ini? Ada ide?
sumber
Jawaban:
Seperti yang Felipe Alsacreations katakan, opsi pertama baik-baik saja.
Jika Anda ingin memastikan bahwa tidak ada di bawah daftar yang ditafsirkan sebagai milik heading, untuk itulah elemen konten pembagian HTML5 digunakan. Jadi, misalnya Anda bisa melakukannya
sumber
<h1>
di dalam<section>
karena itu adalah tajuk tingkat atas dalam tag tersebut.<h1>
sana, tentu. Tapi<h3>
oke juga. Selama Anda tidak menggunakan tajuk tingkat yang lebih tinggi dalam bagian yang sama.Dalam hal ini saya akan menggunakan daftar definisi sebagai berikut:
sumber
Pilihan pertama Anda adalah yang bagus. Ini yang paling tidak bermasalah dan Anda sudah menemukan alasan yang benar mengapa Anda tidak dapat menggunakan opsi lain.
Ngomong-ngomong, heading Anda IS secara eksplisit terkait dengan
<ul>
: itu tepat sebelum daftar! ;)edit: Steve Faulkner, salah satu editor dari W3C HTML5 dan 5.1 telah digambarkan definisi dari sebuah
lt
elemen . Itu adalah draf tidak resmi yang akan dia diskusikan untuk HTML 5.2, tidak lebih.sumber
<p>
. Tapi saya masih ingin sesuatu yang lebih eksplisit, sepertifor
atribut untuk<label>' or the
<th> `untuk tabel. Saya pikir<lh>
opsi ini paling masuk akal jika benar-benar didukung oleh W3C.a <div> adalah divisi logis dalam konten Anda, secara semantik ini akan menjadi pilihan pertama saya jika saya ingin mengelompokkan judul dengan daftar:
maka Anda dapat menggunakan css berikut untuk menata semuanya menjadi satu unit
sumber
Anda juga bisa menggunakan
<figure>
elemen untuk menautkan judul ke daftar Anda seperti ini:Sumber: https://www.w3.org/TR/2017/WD-html53-20171214/single-page.html#the-li-element (Contoh 162)
sumber
Coba definisikan kelas baru, ulheader, di css. p.ulheader ~ ul memilih semua yang langsung mengikuti My Header
sumber
Menurut w3.org (perhatikan bahwa tautan ini ada dalam draf spesifikasi HTML 3.0 yang kedaluwarsa ):
sumber
HTML 3.0
Wah, itu dokumen yang sangat tua.Saya meletakkan tajuk di dalam ul. Tidak ada aturan yang mengatakan UL hanya boleh mengandung elemen LI.
sumber