Il y a suffisamment d'informations sur HTML5 sur le Web (et aussi sur stackoverflow), mais maintenant je suis curieux de connaître les "meilleures pratiques". Les balises comme section / en-têtes / article sont nouvelles, et tout le monde a des opinions différentes sur le moment / l'endroit où vous devez utiliser ces balises. Alors, que pensez-vous de la disposition et du code suivants?
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>
ligne 7. section
autour de l'ensemble du site Web? Ou seulement un div
?
ligne 8. Chaque section
début avec un header
?
ligne 23. Est-ce div
vrai? ou doit-ce être un section
?
ligne 24. Fractionner la colonne gauche / droite avec a div
.
ligne 25. Bon endroit pour le article
tag?
ligne 26. Faut-il mettre votre h1
-tag dans le header
-tag?
ligne 43. Le contenu n'est pas lié à l'article principal, j'ai donc décidé que c'était un section
et non un aside
.
ligne 44. H2 sans header
ligne 53. section
sansheader
ligne 63. Div avec toutes les nouvelles (non liées)
ligne 64. header
avec h2
ligne 65. Hmm, div
ou section
? Ou supprimez-le div
et utilisez uniquement le article
-tag
ligne 105. Pied de page :-)
Réponses:
En fait, vous avez tout à fait raison en matière d'en-tête / pied de page. Voici quelques informations de base sur la façon dont chacune des principales balises HTML5 peut / doit être utilisée (je suggère de lire la source complète liée en bas):
De plus, voici une description sur
article
, introuvable dans la source ci-dessus:la source
<article>
éléments, elle ne contraste pas les éléments mentionnés, elle ne les regroupe pas non plus. La réponse ne donne aucune «meilleure pratique» et ne répond à aucune des questions explicites du PO!Malheureusement, les réponses données jusqu'à présent (y compris les plus votées) sont soit "juste" de bon sens, tout simplement erronées ou au mieux déroutantes. Aucun des mots clés cruciaux 1 n'apparaît!
J'ai écrit 3 réponses:
Pour comprendre le rôle des éléments html discutés ici, vous devez savoir que certains d'entre eux sectionnent le document. Chaque document html peut être sectionné selon l' algorithme de contour HTML5 dans le but de créer une table des matières (TOC). Le plan n'est généralement pas visible (de nos jours), mais les auteurs devraient utiliser html de telle sorte que le plan résultant reflète leurs intentions.
Vous pouvez créer des sections avec exactement ces éléments et rien d'autre :
<section>
sections<article>
sections<nav>
sections<aside>
sections<h*>
2 (toutes ne le font pas, voir ci-dessous)Les sections peuvent être nommées:
<h*>
les sections créées se nomment<section|article|nav|aside>
les sections seront nommées par la première<h*>
s'il y en a une<h*>
sont les seuls qui ne créent pas eux-mêmes de sectionsIl y a encore une chose dans les sections: les contextes suivants (c'est-à-dire les éléments) créent des "limites de contour". Les sections qu'ils contiennent leur sont privées:
<body>
<td>
<blockquote>
<details>
,<dialog>
,<fieldset>
Et<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)
Cela soulève deux questions:
Quelle est la difference entre
<article>
et<section>
?<section>
s sont comme des chapitres de livres<article>
, au moins au niveau le plus bas<article>
et ses commentaires<article>
pourraient également être enveloppés d'un<article>
<section>
s dans un<article>
sont comme des chapitres d'un livre<article>
s dans un<section>
sont comme des poèmes dans un volume (dans une série)Comment
<header>
,<footer>
et<main>
dans tout ça?<header>
et<footer>
<header>
<footer>
<header>
<main>
<body>
c'est-à-dire)<main>
peut même «se cacher» dans certaines sous-sections du document, alors que le document est<header>
et<footer>
ne peut pas (ce balisage marquerait alors l'en-tête / pied de page de cette sous-section)<article>
sections 31 à l' esprit vient: contours, algorithme, implicite tronçonnage
2 je utiliser
<h*>
comme raccourci pour désigner<h1>
,<h2>
,<h3>
,<h4>
,<h5>
et<h6>
3 ne sont
<main>
autorisés dans<aside>
ou<nav>
, mais cela est sans surprise. - En effet:<main>
ne peut se cacher que dans les<section>
sections descendantes (imbriquées) ou apparaître au niveau supérieur, à savoir<body>
la source
sections in an article are like chapters in a book, articles in a section are like poems in a volume
- la meilleure explicationarticle
vs la plus intuitivesection
que j'ai vue!Le balisage de ce document pourrait ressembler à ceci:
Vous pouvez trouver plus d'informations dans cet article sur A List Apart .
la source
<header>
et<footer>
être des éléments de niveau document, ainsi que dans des<section|article|nav|aside>
sections?Je suggère de lire la page wiki W3 sur la structuration HTML5 :
Ils incluent une image que j'ai nettoyée ici:
la source
<section class="summary">
plutôt que<section id="summary">
? Si vous aviez plusieurs articles sur une même page, alors cette dernière méthode entraînerait des identifiants en double sur la même page - un faux pas HTML. Droite?main
tag serait bon à ajouter. Où le mettre serait décidé en fonction du contenu unique de la page. Dans cet exemple, je pense que je le mettrais juste autour du centresection
. En savoir plus: w3.org/TR/2012/WD-html-main-element-20121217 "La section de contenu principale d'un document inclut un contenu unique à ce document et exclut le contenu qui est répété sur un ensemble de documents tels que le site liens de navigation, informations sur les droits d'auteur, logos et bannières du site et formulaires de recherche. "[ explications dans ma «réponse principale» ]
ligne 7. section autour de l'ensemble du site Web? Ou seulement un div ?
Ni. Pour le style: utilisez le
<body>
, il est déjà là. Pour la section / sémantique: comme détaillé dans mon exemple HTML, son effet est contraire à l'utilité. Des enveloppes supplémentaires pour du contenu déjà emballé ne sont pas une amélioration, mais du bruit.ligne 8. Chaque section commence par un en-tête?
Non, c'est le choix de l'auteur où mettre le contenu généralement résumé comme «en-tête». Et si ce contenu d'en-tête est clairement reconnaissable sans marquage supplémentaire, il peut parfaitement rester sans
<header>
. C'est également le choix de l'auteur.ligne 23. Est-ce que ce div a raison? ou cela doit-il être une section ?
C'est
<div>
probablement faux. Cela dépend des intentions: est-ce uniquement pour le style, cela pourrait être juste. Si c'est à des fins sémantiques, c'est faux: ce devrait<article>
plutôt être un comme indiqué dans mon autre réponse .<article>
est également vrai si c'est pour le style et la coupe combinés.<section>
semble incorrect ici, car il n'y a pas de sections similaires avant ou après celle-ci, comme les chapitres d'un livre. (C'est le but de<section>
).ligne 24. Fractionner la colonne gauche / droite avec un div .
Non pourquoi?
ligne 25. Bon endroit pour la balise article ?
Oui, c'est logique.
ligne 26. Est-il nécessaire de mettre votre h1 -tag dans l'en- tête -tag?
Non. Un
<h*>
élément isolé n'a probablement jamais besoin d'entrer dans un<header>
(mais il peut si vous le souhaitez) car il est déjà clair que c'est le titre de ce qui est sur le point de venir. - Il serait logique que cela<header>
englobe également un slogan (marqué d'un<p>
), par exemple.ligne 43. Le contenu n'est pas lié à l'article principal, j'ai donc décidé qu'il s'agissait d'une section et non d'un aparté .
C'est un malentendu qu'un
<aside>
doit être «tangentiellement lié » au contenu autour. Le point est le suivant: utilisez un<aside>
si le contenu n'est que « tangentiellement lié» ou pas du tout!Néanmoins, en plus d'
<aside>
être un choix décent, cela<article>
pourrait être encore mieux qu'un<section>
«élément chaud» et «de nouveaux éléments» ne doivent pas être lus comme deux chapitres d'un livre. Vous pouvez parfaitement opter pour l'un d'entre eux et non pour l'autre comme un tri alternatif de quelque chose, pas comme deux parties d'un tout.ligne 44. H2 sans en- tête
C'est super.
ligne 53. section sans en- tête
Eh bien, il n'y en a pas
<header>
, mais le<h2>
titre laisse assez clair quelle partie de cette section est l'en-tête.ligne 63. Div avec toutes les nouvelles (non liées)
<article>
ou<aside>
pourrait être mieux.ligne 64. en- tête avec h2
Déjà discuté.
ligne 65. Hmm, div ou section ? Ou supprimez cette div et utilisez uniquement l' article -tag
Exactement! Retirez le
<div>
.ligne 105. Pied de page :-)
Très raisonnable.
la source
Selon l'explication donnée dans ma réponse «principale», le document en question devrait être balisé selon un schéma.
Dans les deux tableaux suivants, je montre:
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.
Le tableau suivant montre ma proposition pour une version améliorée. J'utilise le balisage suivant:
<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.
la source
La principale erreur: vous avez "divitis" dans tout le document.
Pourquoi ça?
Au lieu de:
Pour styliser cet en-tête, utilisez la hiérarchie CSS: corps> section> en-tête> h1, corps> section> en-tête> h2
Plus, ... ligne 63: pourquoi l'en-tête encapsule h2 ?? Si vous n'incluez plus d'élément dans l'en-tête, utilisez simplement un seul h2.
Gardez à l'esprit que votre structure n'est pas de styliser un document, mais de construire un document auto-expliqué.
Appliquez ceci au reste du document; Bonne chance ;)
la source
<hgroup>
ne fait plus partie de HTML5Pourquoi ne pas avoir les identifiants item_1, item_2, etc. sur les balises d'article eux-mêmes? Comme ça:
Il semble inutile d'ajouter les divs wrapper. Les valeurs d'ID n'ont aucune signification sémantique en HTML, donc je pense qu'il serait parfaitement valable de le faire - vous ne dites pas que le premier article est toujours item_1, juste item_1 dans le contexte de la page actuelle. Les identifiants n'ont pas besoin d'avoir une signification indépendante du contexte.
De plus, en ce qui concerne votre question à la ligne 26, je ne pense pas que la balise <header> soit requise ici, et je pense que vous pouvez l'omettre car elle est seule dans le div "main-left". S'il figurait dans la liste principale des articles, vous souhaiterez peut-être inclure la balise <header> pour des raisons de cohérence.
la source
Je n'ai pas répondu à d'autres parce qu'il est difficile de deviner de quoi vous parliez. S'il y a d'autres questions, faites-le moi savoir.
la source
article
cela doit nécessairement provenir d'une source externe . w3schools.com/html5/tag_article.aspVoici mon exemple dans lequel je travaille
la source
https://www.w3.org/TR/2014/REC-html5-20141028/sections.html#the-nav-element
la source
Je ne pense pas que vous devriez utiliser la balise sur le résumé de l'actualité (lignes 67, 80, 93). Vous pouvez utiliser la section ou simplement avoir le div qui l'entoure.
Un article doit pouvoir se suffire à lui-même et avoir du sens ou être complet. Comme il est incomplet ou juste un extrait, il ne peut pas être un article, c'est plus une section.
Lorsque vous cliquez sur «en savoir plus», la page suivante peut
la source
EDIT: Malheureusement, je dois me corriger.
Reportez-vous ci-dessous https://stackoverflow.com/a/17935666/2488942 pour un lien vers les spécifications w3 qui incluent un exemple (contrairement à celles que j'ai examinées plus tôt).
Mais alors ... ici un bel article à ce sujet grâce à @Fez.
Ma réponse originale était:
La structure des spécifications w3:
me suggère que ce
section
niveau est plus élevé quearticle
. Comme mentionné dans cette réponse, lessection
groupes ont un contenu lié par thème. Le contenu d'un article est à mon avis lié de toute façon thématiquement, donc cela, du moins pour moi, suggère également que lessection
groupes à un niveau supérieur par rapport àarticle
.Je pense qu'il est destiné à être utilisé comme ceci:
ou pour un site d'actualités:
la source
„Ligne 23. Cette div est-elle juste? ou doit-ce être une section? "
Ni l'un ni l'autre - il existe une
main
balise à cet effet, qui n'est autorisée qu'une fois par page et doit être utilisée comme enveloppe pour le contenu principal (contrairement à une barre latérale ou un en-tête à l'échelle du site).http://www.w3.org/html/wg/drafts/html/master/grouping-content.html#the-main-element
la source
Je veux clarifier cette question plus précisément, corrigez-moi si je me trompe Prenons un exemple de mur Facebook
1.Le mur se trouve sous la balise "section", ce qui signifie qu'il est distinct de la page.
2.Tous les messages relèvent de la balise "article".
3. Ensuite, nous avons un seul message, qui relève de la balise "section".
3.Nous avons l'intitulé "X utilisateur poster ceci" pour cela, nous pouvons utiliser la balise "en-tête".
4.Puis à l'intérieur de l'article, nous avons trois sections, l'une est Images / texte, bouton de partage de commentaires et boîte de commentaires.
5.Pour la boîte de commentaires, nous pouvons utiliser la balise d'article.
la source
Selon la réponse de Nathan , cela est parfaitement logique (pour les parties rouges et oranges, vous pourriez peut-être utiliser
div
les s et / ouheader
etfooter
respectivement):la source