Hay suficiente información sobre HTML5 en la web (y también sobre stackoverflow), pero ahora tengo curiosidad sobre las "mejores prácticas". Las etiquetas como sección / encabezados / artículo son nuevas, y todos tienen opiniones diferentes sobre cuándo / dónde debe usar estas etiquetas. Entonces, ¿qué piensan ustedes del siguiente diseño y código?
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>
línea 7. en section
todo el sitio web? O solo a div
?
línea 8. Cada uno section
comienza con un header
?
línea 23. ¿Es esto div
correcto? o debe ser esto un section
?
línea 24. Dividir columna izquierda / derecha con a div
.
línea 25. ¿Lugar correcto para la article
etiqueta?
línea 26. ¿Es necesario poner su h1
etiqueta en la header
etiqueta?
línea 43. El contenido no está relacionado con el artículo principal, así que decidí que esto es un section
y no un aside
.
línea 44. H2 sin header
línea 53. section
sinheader
línea 63. Div con todas las noticias (no relacionadas)
línea 64. header
con h2
línea 65. Hmm, div
o section
? O elimine esto div
y solo use la article
etiqueta
línea 105. Pie de página :-)
Respuestas:
En realidad, tienes bastante razón cuando se trata de encabezado / pie de página. Aquí hay información básica sobre cómo cada una de las principales etiquetas HTML5 puede / debe usarse (sugiero leer la fuente completa vinculada en la parte inferior):
Además, aquí hay una descripción que
article
no se encuentra en la fuente anterior:fuente
<article>
elementos, no contrasta los elementos mencionados, ni los agrupa. ¡La respuesta no ofrece "mejores prácticas", ni responde a ninguna de las preguntas explícitas del OP!Lamentablemente, las respuestas dadas hasta ahora (incluidas las más votadas) son "simplemente" sentido común, simplemente erróneas o confusas en el mejor de los casos. Ninguna de las palabras clave cruciales 1 emergente!
Escribí 3 respuestas:
Para comprender el papel de los elementos html discutidos aquí, debe saber que algunos de ellos seccionan el documento. Todos y cada uno de los documentos html se pueden seccionar de acuerdo con el algoritmo de esquema HTML5 con el fin de crear una tabla de contenido (TOC). El esquema no es generalmente visible (en estos días), pero los autores deben usar html de tal manera que el esquema resultante refleje sus intenciones.
Puede crear secciones con exactamente estos elementos y nada más :
<section>
secciones<article>
secciones<nav>
secciones<aside>
secciones<h*>
2 (no todas hacen esto, ver más abajo)Las secciones se pueden nombrar:
<h*>
las secciones creadas se nombran a sí mismas<section|article|nav|aside>
las secciones serán nombradas por la primera<h*>
si hay una<h*>
son los únicos que no crean secciones por sí mismosHay una cosa más en las secciones: los siguientes contextos (es decir, elementos) crean "límites de contorno". Las secciones que contengan son privadas para ellos:
<body>
<td>
<blockquote>
<details>
,<dialog>
,<fieldset>
, Y<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)
Esto plantea dos preguntas:
¿Cuál es la diferencia entre
<article>
y<section>
?<section>
s son como capítulos de libros<article>
, al menos en el nivel más bajo<article>
y sus comentarios<article>
también se pueden envolver con un<article>
<section>
s en un<article>
son como capítulos en un libro<article>
s en a<section>
son como poemas en un volumen (dentro de una serie)¿Cómo hacer
<header>
,<footer>
y<main>
en todo esto?<header>
y<footer>
<header>
<footer>
<header>
<main>
<body>
es decir)<main>
incluso puede "esconderse" en algunas subsecciones del documento, mientras que el documento<header>
y<footer>
no puede (ese marcado marcaría el encabezado / pie de página de esa subsección entonces)<article>
secciones 31 a la mente viene: contornos, algoritmo, seccionamiento implícito
2 Yo uso
<h*>
como forma abreviada de<h1>
,<h2>
,<h3>
,<h4>
,<h5>
y<h6>
3 no está
<main>
permitido en<aside>
o<nav>
, pero eso es de ninguna sorpresa. - En efecto:<main>
solo se puede ocultar en<section>
secciones descendentes (anidadas) o aparecer en el nivel superior, es decir<body>
fuente
sections in an article are like chapters in a book, articles in a section are like poems in a volume
mejor y más intuitivaarticle
vssection
explicación que he visto!El marcado para ese documento podría tener el siguiente aspecto:
Puede encontrar más información en este artículo en A List Apart .
fuente
<header>
y<footer>
ser elementos a nivel de documento, así como dentro de las<section|article|nav|aside>
secciones?Sugeriría leer la página wiki de W3 sobre la estructuración de HTML5 :
Incluyen una imagen que he limpiado aquí:
fuente
<section class="summary">
lugar de<section id="summary">
? Si tenía varios artículos en una página, el último método daría como resultado identificaciones duplicadas en la misma página, un paso en falso HTML. ¿Derecha?main
etiqueta sería buena para agregar. Dónde colocarlo se decidiría en función del contenido único de la página. En este ejemplo, creo que lo pondría alrededor del centrosection
. Más información: w3.org/TR/2012/WD-html-main-element-20121217 "La sección de contenido principal de un documento incluye contenido exclusivo de ese documento y excluye contenido que se repite en un conjunto de documentos como el sitio enlaces de navegación, información de copyright, logotipos y pancartas del sitio y formularios de búsqueda ".[ explicaciones en mi "respuesta principal" ]
línea 7. sección alrededor de todo el sitio web? ¿O solo un div ?
Ninguno. Para el estilo: use
<body>
, ya está allí. Para seccionamiento / semántica: como se detalla en mi HTML de ejemplo, su efecto es contrario a la utilidad. Las envolturas adicionales para contenido ya envuelto no son una mejora, sino ruido.línea 8. ¿Cada sección comienza con un encabezado?
No, es la elección del autor dónde colocar el contenido que generalmente se resume como "encabezado". Y si el contenido del encabezado es claramente reconocible sin marcas adicionales, puede quedar perfectamente sin él
<header>
. Esta es también la elección del autor.línea 23. ¿Es correcto este div ? o esto debe ser una sección ?
El
<div>
probablemente está mal. Depende de las intenciones: es solo para diseñar, podría ser correcto. Si es para propósitos semánticas que es un error: debe ser un<article>
lugar como se muestra en mi otra respuesta .<article>
también es correcto si es para el estilo y el corte combinado.<section>
se ve mal aquí, ya que no hay secciones similares antes o después de esta, como los capítulos de un libro. (Este es el propósito de<section>
).línea 24. Dividir columna izquierda / derecha con un div .
¿No porque?
línea 25. ¿Lugar correcto para la etiqueta del artículo ?
Si, tiene sentido.
línea 26. ¿Es necesario poner su etiqueta h1 en la etiqueta del encabezado ?
No. Un
<h*>
elemento solitario probablemente nunca necesite entrar en un<header>
(pero puede hacerlo si lo desea) ya que está claro que es el título de lo que está por venir. - Tendría sentido si eso<header>
también abarcara un eslogan (marcado con<p>
), por ejemplo.línea 43. El contenido no está relacionado con el artículo principal, así que decidí que esta es una sección y no un aparte .
Es un malentendido que un
<aside>
tiene que estar "tangencialmente relacionado " con el contenido que lo rodea. El punto es: ¡use un<aside>
si el contenido solo está " relacionado tangencialmente " o no lo está!Sin embargo, aparte de
<aside>
ser una opción decente,<article>
aún podría ser mejor que una,<section>
ya que los "artículos populares" y los "artículos nuevos" no deben leerse como dos capítulos en un libro. Puedes elegir perfectamente uno de ellos y no el otro como una clasificación alternativa de algo, no como dos partes de un todo.línea 44. H2 sin encabezado
Es genial.
línea 53. sección sin encabezado
Bueno, no hay
<header>
, pero el<h2>
encabezado deja bastante claro qué parte de esta sección es el encabezado.línea 63. Div con todas las noticias (no relacionadas)
<article>
o<aside>
podría ser mejorlínea 64. encabezado con h2
Discutido ya.
línea 65. Hmm, div o sección ? O elimine este div y solo use el artículo -tag
¡Exactamente! Eliminar el
<div>
.línea 105. Pie de página :-)
Muy razonable.
fuente
De acuerdo con la explicación en mi respuesta "principal", el documento en cuestión debe marcarse de acuerdo con un esquema.
En las siguientes dos tablas muestro:
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.
La siguiente tabla muestra mi propuesta para una versión mejorada. Yo uso el siguiente marcado:
<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.
fuente
El error principal: tiene "divitis" en todo el documento.
¿Por qué esto?
En vez de:
Para estilizar este encabezado, use la jerarquía CSS: cuerpo> sección> encabezado> h1, cuerpo> sección> encabezado> h2
Más, ... línea 63: ¿por qué el encabezado envuelve h2? Si no incluye más elementos dentro del encabezado, solo use un solo h2.
Tenga en cuenta que su estructura no es estilizar el documento, sino construir un documento autoexplicado.
Aplicar esto al resto del documento; Buena suerte ;)
fuente
<hgroup>
ya no es parte de HTML5¿Por qué no tener los ID de item_1, item_2, etc. en las etiquetas del artículo? Me gusta esto:
Parece innecesario agregar los divisores de envoltura. Los valores de ID no tienen un significado semántico en HTML, por lo que creo que sería perfectamente válido hacer esto: no está diciendo que el primer artículo siempre sea el elemento_1, solo el elemento_1 dentro del contexto de la página actual. No se requiere que las ID tengan ningún significado que sea independiente del contexto.
Además, en cuanto a su pregunta en la línea 26, no creo que se requiera la etiqueta <header> allí, y creo que podría omitirla ya que está sola en el div "main-left". Si estuviera en la lista principal de artículos, es posible que desee incluir la etiqueta <header> solo por razones de coherencia.
fuente
No respondí otras porque es difícil adivinar a qué se refería. Si hay más preguntas, hágamelo saber.
fuente
article
necesariamente sea de una fuente externa . w3schools.com/html5/tag_article.aspAquí está mi ejemplo en el que trabajo
fuente
https://www.w3.org/TR/2014/REC-html5-20141028/sections.html#the-nav-element
fuente
No creo que deba usar la etiqueta en el resumen de las noticias (líneas 67, 80, 93). Puede usar la sección o simplemente tener el div que lo encierra.
Un artículo debe ser capaz de mantenerse por sí mismo y tener sentido o estar completo. Como es incompleto o simplemente un extracto, no puede ser un artículo, es más una sección.
Al hacer clic en "leer más", la página siguiente puede
fuente
EDITAR: Desafortunadamente tengo que corregirme.
Consulte a continuación https://stackoverflow.com/a/17935666/2488942 para obtener un enlace a las especificaciones de w3 que incluyen un ejemplo (a diferencia de las que vi anteriormente).
Pero entonces ... Aquí hay un buen artículo al respecto gracias a @Fez.
Mi respuesta original fue:
La forma en que se estructuran las especificaciones de w3:
me sugiere que
section
es un nivel más alto quearticle
. Como se menciona en esta respuesta, sesection
agrupan los contenidos relacionados temáticamente. El contenido dentro de un artículo está, en mi opinión, relacionado temáticamente de todos modos, por lo tanto, esto, al menos para mí, también sugiere que lossection
grupos en un nivel superior en comparación conarticle
.Creo que está destinado a ser usado así:
o para un sitio web de noticias:
fuente
„Línea 23. ¿Es correcto este div? ¿o debe ser una sección?
Tampoco: hay una
main
etiqueta para ese propósito, que solo se permite una vez por página y debe usarse como un contenedor para el contenido principal (en contraste con una barra lateral o un encabezado de todo el sitio).http://www.w3.org/html/wg/drafts/html/master/grouping-content.html#the-main-element
fuente
Quiero aclarar esta pregunta con mayor precisión, corregirme si me equivoco. Tomemos un ejemplo del muro de Facebook.
1. La pared viene bajo la etiqueta "sección", que indica que está separada de la página.
2. Todas las publicaciones vienen bajo la etiqueta "artículo".
3. Luego tenemos una sola publicación, que viene bajo la etiqueta "sección".
3. Tenemos el encabezado "X user post this" para esto podemos usar la etiqueta "header".
4. Luego, dentro de la publicación, tenemos tres secciones, una es Imágenes / texto, botón Me gusta, compartir comentarios y cuadro de comentarios.
5.Para el cuadro de comentarios podemos usar la etiqueta del artículo.
fuente
Según la respuesta de Nathan , esto tiene mucho sentido (para las partes roja y naranja, tal vez podría usar
div
's y / oheader
yfooter
respectivamente):fuente