Ada cukup informasi tentang HTML5 di web (dan juga tentang stackoverflow), tetapi sekarang saya ingin tahu tentang "praktik terbaik". Tag seperti bagian / header / artikel adalah baru, dan setiap orang memiliki pendapat berbeda tentang kapan / di mana Anda harus menggunakan tag ini. Jadi apa yang kalian pikirkan tentang tata letak dan kode berikut?
1 <!doctype html>
2 <head>
3 <title>Website</title>
4 </head>
5
6 <body>
7 <section>
8 <header>
9 <div id="logo"></div>
10 <div id="language"></div>
11 </header>
12
13 <nav>
14 <ul>
15 <li>menu 1</li>
16 <li>menu 2</li>
17 <li>menu 3</li>
18 <li>menu 4</li>
19 <li>menu 5</li>
20 </ul>
21 </nav>
22
23 <div id="main">
24 <div id="main-left">
25 <article>
26 <header><h1>This is a title</h1></header>
27
28 <p>Lorem ipsum dolor sit amet, consectetur
29 adipiscing elit. Quisque semper, leo eget</p>
30
31 <p>Lorem ipsum dolor sit amet, consectetur
32 adipiscing elit. Quisque semper, leo eget</p>
33
34 <p>Lorem ipsum dolor sit amet, consectetur
35 adipiscing elit. Quisque semper, leo eget</p>
36
37 <p>Lorem ipsum dolor sit amet, consectetur
38 adipiscing elit. Quisque semper, leo eget</p>
39 </article>
40 </div>
41
42 <div id="main-right">
43 <section id="main-right-hot">
44 <h2>Hot items</h2>
45 <ul>
46 <li>Lorem ipsum</li>
47 <li>dolor sit</li>
48 <li>...</li>
49 </ul>
50 </section>
51
52 <section id="main-right-new">
53 <h2>New items</h2>
54 <ul>
55 <li>Lorem ipsum</li>
56 <li>dolor sit</li>
57 <li>...</li>
58 </ul>
59 </section>
60 </div>
61 </div>
62
63 <div id="news-items">
64 <header><h2>The latest news</h2></header>
65
66 <div id="item_1">
67 <article>
68 <header>
69 <img src="#" title="titel artikel" />
70 <h3>Lorem ipsum .....</h3>
71 </header>
72 <p>Lorem ipsum dolor sit amet,
73 adipiscing elit. Quisque semper, </p>
74 <a href="#">Read more</a>
75 </article>
76 </div>
77
78
79 <div id="item_2">
80 <article>
81 <header>
82 <img src="#" title="titel artikel" />
83 <h3>Lorem ipsum .....</h3>
84 </header>
85 <p>Lorem ipsum dolor sit amet,
86 adipiscing elit. Quisque semper, </p>
87 <a href="#">Read more</a>
88 </article>
89 </div>
90
91
92 <div id="item_3">
93 <article>
94 <header>
95 <img src="#" title="titel artikel" />
96 <h3>Lorem ipsum .....</h3>
97 </header>
98 <p>Lorem ipsum dolor sit amet,
99 adipiscing elit. Quisque semper, </p>
100 <a href="#">Read more</a>
101 </article>
102 </div>
103 </div>
104
105 <footer>
106 <ul>
107 <li>menu 1</li>
108 <li>menu 2</li>
109 <li>menu 3</li>
110 <li>menu 4</li>
111 <li>menu 5</li>
112 </ul>
113 </footer>
114 </section>
115 </body>
116 </html>
baris 7. section
di seluruh situs web? Atau hanya div
?
baris 8. Setiap section
mulai dengan header
?
baris 23. Apakah ini div
benar? atau haruskah ini menjadi section
?
baris 24. Pisahkan kolom kiri / kanan dengan a div
.
baris 25. Tempat yang tepat untuk article
tag?
baris 26. Apakah harus memasukkan h1
-tag di header
-tag?
baris 43. Konten tidak terkait dengan artikel utama, jadi saya memutuskan ini adalah section
dan bukan a aside
.
baris 44. H2 tanpa header
baris 53. section
tanpaheader
baris 63. Div dengan semua item berita (tidak terkait)
baris 64. header
dengan h2
baris 65. Hmm, div
atau section
? Atau hapus ini div
dan hanya gunakan article
-tag
baris 105. Footer :-)
Jawaban:
Sebenarnya, Anda benar ketika berbicara tentang header / footer. Berikut adalah beberapa informasi dasar tentang bagaimana masing-masing tag HTML5 utama dapat / harus digunakan (saya sarankan membaca sumber lengkap yang ditautkan di bagian bawah):
Selain itu, inilah uraian tentang
article
, tidak ditemukan dalam sumber di atas:sumber
<article>
elemen, tidak kontras dengan elemen yang disebutkan, juga tidak mengelompokkannya. Jawabannya tidak memberikan "praktik terbaik", juga tidak menjawab pertanyaan eksplisit OP!Sayangnya jawaban yang diberikan sejauh ini (termasuk yang paling banyak dipilih) adalah "hanya" akal sehat, jelas salah atau paling membingungkan. Tidak ada kata kunci penting 1 yang muncul!
Saya menulis 3 jawaban:
Untuk memahami peran elemen html yang dibahas di sini, Anda harus tahu bahwa beberapa di antaranya bagian dari dokumen. Setiap dan setiap dokumen html dapat dibagi sesuai dengan algoritma outline HTML5 untuk tujuan membuat outline —atauatau daftar isi (TOC). Garis umumnya tidak terlihat (hari ini), tetapi penulis harus menggunakan html sedemikian rupa sehingga garis yang dihasilkan mencerminkan niat mereka.
Anda dapat membuat bagian dengan tepat elemen-elemen ini dan tidak ada yang lain :
<section>
bagian<article>
bagian<nav>
bagian<aside>
bagian<h*>
2 (tidak semua melakukan ini, lihat di bawah)Bagian dapat dinamai:
<h*>
bagian nama dibuat sendiri<section|article|nav|aside>
bagian akan dinamai oleh yang pertama<h*>
jika ada<h*>
adalah satu-satunya yang tidak membuat bagian sendiriAda satu hal lagi untuk bagian: konteks berikut (yaitu elemen) membuat "batas garis". Bagian apa pun yang dikandungnya bersifat pribadi untuk mereka:
<body>
<td>
<blockquote>
<details>
,<dialog>
,<fieldset>
, Dan<figure>
example HTML
<body> <h3>if you want siblings at top level...</h3> <h3>...you have to use untyped sections with <h*>...</h3> <article> <h1>...as any other section will descent</h1> </article> <nav> <ul> <li><a href=...>...</a></li> </ul> </nav> </body>
has this outline
1. if you want siblings at top level... 2. ...you have to use untyped sections with <h*>... 2.1. ...as any other section will descent 2.2. (unnamed navigation)
Ini menimbulkan dua pertanyaan:
Apa perbedaan antara
<article>
dan<section>
?<section>
Ini seperti bab buku<article>
, setidaknya pada level terendah<article>
dan komentarnya<article>
juga dapat dibungkus dengan<article>
<section>
s dalam<article>
seperti bab dalam buku<article>
s dalam<section>
seperti puisi dalam volume (dalam seri)Bagaimana
<header>
,<footer>
dan<main>
cocok?<header>
dan<footer>
<header>
<footer>
<header>
<main>
<body>
yaitu)<main>
bahkan bisa "bersembunyi" di beberapa subbagian dokumen, sedangkan dokumen<header>
dan<footer>
tidak bisa (markup itu akan menandai header / footer dari subbagian itu kemudian)<article>
bagian 31 pikiran datang: garis besar, algoritma, sectioning implisit
2 Aku digunakan
<h*>
sebagai singkatan untuk<h1>
,<h2>
,<h3>
,<h4>
,<h5>
dan<h6>
3 tidak adalah
<main>
diperbolehkan dalam<aside>
atau<nav>
, tapi itu tidak mengejutkan. - Efeknya:<main>
hanya bisa bersembunyi di<section>
bagian turun (bersarang) atau muncul di tingkat atas, yaitu<body>
sumber
sections in an article are like chapters in a book, articles in a section are like poems in a volume
- Penjelasan terbaik dan paling intuitifarticle
vs yangsection
pernah saya lihat!Markup untuk dokumen itu bisa terlihat seperti berikut:
Anda dapat menemukan informasi lebih lanjut dalam artikel ini di A List Apart .
sumber
<header>
dan<footer>
menjadi elemen tingkat dokumen, serta dalam<section|article|nav|aside>
bagian?Saya sarankan membaca halaman w3 Wiki tentang penataan HTML5 :
Termasuk gambar yang sudah saya bersihkan di sini:
sumber
<section class="summary">
daripada<section id="summary">
? Jika Anda memiliki banyak artikel di satu halaman, maka metode yang terakhir akan menghasilkan duplikat ID di halaman yang sama — kecacatan HTML. Baik?main
tag akan baik untuk menambahkan. Tempat meletakkannya akan diputuskan berdasarkan konten unik apa pada halaman tersebut. Dalam contoh ini, saya pikir saya akan meletakkannya di tengahsection
. Baca selengkapnya: w3.org/TR/2012/WD-html-main-element-20121217 "Bagian konten utama dari sebuah dokumen termasuk konten yang unik untuk bahwa dokumen dan tidak termasuk konten yang diulang di satu set dokumen seperti situs tautan navigasi, informasi hak cipta, logo dan spanduk situs dan formulir pencarian. "[ penjelasan dalam "jawaban utama" saya ]
baris 7. bagian di seluruh situs web? Atau hanya div ?
Tidak juga. Untuk penataan: gunakan
<body>
, sudah ada di sana. Untuk sectioning / semantik: sebagaimana dirinci dalam HTML contoh saya efeknya bertentangan dengan kegunaan. Pembungkus ekstra untuk konten yang sudah dibungkus tidak ada perbaikan, tetapi kebisingan.baris 8. Setiap bagian dimulai dengan tajuk?
Tidak, itu adalah pilihan penulis tempat meletakkan konten yang biasanya diringkas sebagai "header". Dan jika konten tajuk itu dapat dikenali dengan jelas tanpa tanda tambahan, itu mungkin akan tetap ada
<header>
. Ini juga pilihan penulis.baris 23. Apakah div ini benar? atau haruskah ini bagian ?
Itu
<div>
mungkin salah. Itu tergantung pada niat: apakah hanya untuk penataan, itu mungkin benar. Jika itu untuk tujuan semantik itu salah: itu harus menjadi<article>
bukan seperti yang ditunjukkan dalam jawaban saya yang lain .<article>
juga tepat jika itu untuk kombinasi style dan sectioning.<section>
terlihat salah di sini, karena tidak ada bagian yang serupa sebelum atau sesudah ini, seperti bab dalam buku. (Ini tujuan dari<section>
).baris 24. Pisahkan kolom kiri / kanan dengan div .
Tidak Memangnya kenapa?
baris 25. Tempat yang tepat untuk tag artikel ?
Ya, masuk akal.
baris 26. Apakah harus meletakkan h1 -tag di header -tag?
Tidak. Satu-satunya
<h*>
elemen mungkin tidak perlu masuk<header>
(tetapi bisa jika Anda mau) karena sudah jelas bahwa itu adalah judul dari apa yang akan datang. - Masuk akal jika itu<header>
juga mencakup tagline (ditandai dengan<p>
), misalnya.baris 43. Konten tidak terkait dengan artikel utama, jadi saya memutuskan ini adalah bagian dan bukan samping .
Ini adalah kesalahpahaman bahwa
<aside>
harus " berhubungan secara tangensial " dengan konten di sekitar. Intinya adalah: gunakan<aside>
jika konten hanya " terkait secara tangensial " atau tidak sama sekali!Namun demikian, selain
<aside>
sebagai pilihan yang layak,<article>
mungkin masih lebih baik daripada<section>
"item panas" dan "item baru" tidak dibaca seperti dua bab dalam buku. Anda dapat dengan sempurna memilih salah satu dari mereka dan tidak yang lain menyukai alternatif penyortiran sesuatu, tidak seperti dua bagian dari keseluruhan.baris 44. H2 tanpa header
Bagus.
baris 53. bagian tanpa tajuk
Yah, tidak ada
<header>
, tapi<h2>
-heading meninggalkan bagian mana yang jelas di bagian ini adalah header.baris 63. Div dengan semua item berita (tidak terkait)
<article>
atau<aside>
mungkin lebih baik.baris 64. header dengan h2
Sudah dibahas.
baris 65. Hmm, div atau bagian ? Atau hapus div ini dan hanya gunakan artikel -tag
Persis! Hapus
<div>
.baris 105. Footer :-)
Sangat masuk akal
sumber
Menurut penjelasan dalam jawaban "utama" saya , dokumen yang dimaksud harus ditandai sesuai dengan garis besar.
Dalam dua tabel berikut saya tunjukkan:
original html (shortened)
<body> <section> <header> <div id=logo></div> <div id=language></div> </header> <nav> ... </nav> <div id=main> <div id=main-left> <article> <header> <h1>The real thing</h1> </header> </article> </div> <div id=main-right> <section id=main-right-hot> <h2>Hot items</h2> </section> <section id=main-right-new> <h2>New items</h2> </section> </div> </div> <div id=news-items> <header> <h2>The latest news</h2> </header> <div id=item_1> <article> <header> <h3>...</h3> </header> <a>read more</a> </article> </div> <div id=item_2> <article> <header> <h3>...</h3> </header> <a>read more</a> </article> </div> <div id=item_3> <article> <header> <h3>...</h3> </header> <a>read more</a> </article> </div> </div> <footer> <ul><li>...</ul> </footer> </section>
original html relevant for outline
<body> <section> // logo and language <nav> ... </nav> <article> <h1>The real thing</h1> </article> <section> <h2>Hot items</h2> </section> <section> <h2>New items</h2> </section> <h2>The latest news</h2> <article> <h3>...</h3> </article> <article> <h3>...</h3> </article> <article> <h3>...</h3> </article> // footer links </section>
resulting outline
1. (untitled document) 1.1. (untitled section) 1.1.1. (untitled navigation) 1.1.2. The real thing (h1) 1.1.3. Hot items (h2) 1.1.4. New items (h2) 1.1.5. The latest news (h2) 1.1.6. news item_1 (h3) 1.1.7. news item_2 (h3) 1.1.8. news item_3 (h3)
The outline of the original is
definitively not what was intended.
Tabel berikut menunjukkan proposal saya untuk versi yang ditingkatkan. Saya menggunakan markup berikut:
<removed>
<NEW_OR_CHANGED_ELEMENT>
<element MOVED_ATTRIBUTE=1>
possible intended outline
1. (main) 1.1. The real thing 1.2. (hot&new) 1.2.1. Hot items 1.2.2. New items 2. The latest news 2.1. news item_1 2.2. news item_2 2.3. news item_3
modified html
<body>
<section>
<header> <ASIDE> <div id=logo></div> <div id=language></div> </ASIDE> </header> <nav> ... </nav> <ARTICLE id=main>
<div id=main-left>
<article ID=main-left> <header> <h1>The real thing</h1> </header> </article>
</div>
<ARTICLE id=main-right> <ARTICLE id=main-right-hot> <h2>Hot items</h2> </ARTICLE> <ARTICLE id=main-right-new> <h2>New items</h2> </ARTICLE> </ARTICLE> </ARTICE> <ARTICLE id=news-items> <header> <h2>The latest news</h2> </header>
<div id=item_1>
<article ID=item_1> <header> <h3>...</h3> </header> <a>read more</a> </article>
</div>
<div id=item_2>
<article ID=item_2> <header> <h3>...</h3> </header> <a>read more</a> </article>
</div>
<div id=item_3>
<article ID=item_3> <header> <h3>...</h3> </header> <a>read more</a> </article>
</div>
</ARTICLE> <footer> <NAV> <ul><li>...</ul> </NAV> </footer>
``</section>
resulting outline
1. (untitled document) 1.1. (untitled logo and lang) 1.2. (untitled navigation) 1.3. (untitled main) 1.3.1 The real thing 1.3.2. (untitled hot&new) 1.3.2.1. Hot items 1.3.2.2. New items 1.4. The latest news 1.4.1. news item_1 1.4.2. news item_2 1.4.3. news item_3 1.5. (untitled footer nav)
The modified HTML reflects the
intended outline way better than
the original.
sumber
Kesalahan utama: Anda memiliki "divitis" di seluruh dokumen.
Kenapa ini?
Dari pada:
Untuk mengubahsuaikan tajuk ini, gunakan hierarki CSS: body> section> header> h1, body> section> header> h2
Lebih lanjut, ... baris 63: mengapa header membungkus h2 ?? Jika Anda tidak menyertakan elemen lagi di dalam header, cukup gunakan h2 tunggal.
Perlu diingat, struktur Anda bukan untuk membuat stylize dokumen, tetapi membuat dokumen sendiri.
Terapkan ini ke seluruh dokumen; Semoga berhasil ;)
sumber
<hgroup>
bukan lagi bagian dari HTML5Mengapa tidak memiliki item_1, item_2, dll. ID pada tag artikel sendiri? Seperti ini:
Tampaknya tidak perlu menambahkan div pembungkus. Nilai ID tidak memiliki arti semantik dalam HTML, jadi saya pikir ini akan sangat valid untuk melakukan ini - Anda tidak mengatakan bahwa artikel pertama selalu item_1, cukup item_1 dalam konteks halaman saat ini. ID tidak diharuskan untuk memiliki makna yang independen dari konteks.
Selain itu, untuk pertanyaan Anda pada baris 26, saya tidak berpikir tag <header> diperlukan di sana, dan saya pikir Anda dapat menghilangkannya karena itu sendiri di div "main-left". Jika ada di daftar utama artikel Anda mungkin ingin memasukkan tag <header> hanya demi konsistensi.
sumber
Saya tidak menjawab yang lain karena agak sulit untuk menebak apa yang Anda maksud. Jika ada pertanyaan lagi, beri tahu saya.
sumber
article
pasti dari sumber eksternal . w3schools.com/html5/tag_article.aspInilah contoh saya di mana saya bekerja
sumber
https://www.w3.org/TR/2014/REC-html5-20141028/sections.html#the-nav-element
sumber
Saya tidak berpikir Anda harus menggunakan tag pada ringkasan item berita (baris 67, 80, 93). Anda dapat menggunakan bagian atau hanya memiliki div terlampir.
Artikel harus bisa berdiri sendiri & masih masuk akal atau lengkap. Karena tidak lengkap atau hanya ekstrak, itu tidak bisa berupa artikel, ini lebih merupakan bagian.
Ketika Anda mengklik 'baca lebih lanjut', halaman selanjutnya dapat
sumber
EDIT: Sayangnya saya harus memperbaiki diri sendiri.
Lihat di bawah https://stackoverflow.com/a/17935666/2488942 untuk tautan ke spesifikasi w3 yang menyertakan contoh (tidak seperti yang saya lihat sebelumnya).
Tapi kemudian .... Ini adalah artikel yang bagus tentang ini berkat @Fez.
Tanggapan asli saya adalah:
Cara spesifikasi w3 disusun:
menyarankan kepada saya bahwa itu
section
adalah tingkat yang lebih tinggi dariarticle
. Sebagaimana disebutkan dalam jawaban inisection
mengelompokkan konten terkait tematis. Konten dalam sebuah artikel menurut saya tetap terkait secara tematis, karenanya ini, setidaknya bagi saya, kemudian juga menyarankan bahwasection
kelompok pada tingkat yang lebih tinggi dibandingkan denganarticle
.Saya pikir itu dimaksudkan untuk digunakan seperti ini:
atau untuk situs web berita:
sumber
„Baris 23. Apakah div ini benar? atau haruskah ini menjadi bagian? "
Tidak ada - ada
main
tag untuk tujuan itu, yang hanya diperbolehkan sekali per halaman dan harus digunakan sebagai pembungkus untuk konten utama (berbeda dengan sidebar atau header situs-lebar).http://www.w3.org/html/wg/drafts/html/master/grouping-content.html#the-main-element
sumber
Saya ingin mengklarifikasi pertanyaan ini dengan lebih tepat, koreksi saya jika saya salah. Mari kita ambil contoh Facebook Wall
1.Wall berada di bawah tag "bagian", yang menunjukkan itu terpisah dari halaman.
2. Semua posting berada di bawah tag "artikel".
3.Kemudian kami memiliki satu posting, yang berada di bawah tag "bagian".
3.Kami memiliki judul "X posting pengguna ini" untuk ini kita dapat menggunakan tag "heading".
4.Kemudian di dalam postingan kita memiliki tiga bagian satu yaitu Gambar / teks, seperti tombol share-comment dan kotak komentar.
5.Untuk kotak komentar kita dapat menggunakan tag artikel.
sumber
Menurut jawaban Nathan , ini masuk akal (untuk bagian merah dan oranye, mungkin Anda bisa menggunakan
div
's dan / atau masingheader
-footer
masing):sumber