В Интернете достаточно информации о HTML5 (а также о стековом потоке), но теперь мне интересно узнать о «лучших практиках». Такие теги, как section / headers / article, являются новыми, и у всех разные мнения о том, когда и где вы должны использовать эти теги. Так что вы, ребята, думаете о следующем макете и коде?
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>
строка 7. section
вокруг всего сайта? Или только div
?
строка 8. Каждый section
начинается с header
?
строка 23. Это div
правильно? или это должно быть section
?
строка 24. Разбить левый / правый столбец с помощью div
.
строка 25. Правильное место для article
тега?
строка 26. Требуется ли h1
указывать ваш -tag в header
-tag?
строка 43. Содержание не связано с основной статьей, поэтому я решил, что это section
а не а aside
.
линия 44. Н2 без header
строка 53. section
безheader
строка 63. Разделите со всеми (не связанными) новостями
строка 64. header
с h2
линия 65. Хм div
или section
? Или удалите это div
и используйте только article
-tag
строка 105. Нижний колонтитул :-)
Ответы:
На самом деле, вы совершенно правы, когда дело доходит до верхнего / нижнего колонтитула. Вот некоторая основная информация о том, как можно / нужно использовать каждый из основных тегов HTML5 (я предлагаю прочитать полный исходный код, указанный внизу):
Кроме того, вот описание
article
, не найденное в приведенном выше источнике:источник
<article>
элементах, не контрастирует с упомянутыми элементами и не группирует их. Ответ не дает «лучших практик» и не отвечает ни на один из явных вопросов ОП!К сожалению, ответы, данные до сих пор (включая наиболее проголосовавших), являются либо «просто» здравым смыслом, либо ошибочными, либо в лучшем случае запутанными. Ни одно из ключевых слов 1 не всплыло!
Я написал 3 ответа:
Чтобы понять роль html-элементов, обсуждаемых здесь, вы должны знать, что некоторые из них разбивают документ на части. Каждый HTML-документ может быть разделен в соответствии с алгоритмом контура HTML5 с целью создания схемы - или - оглавления (TOC). Схема обычно не видна (в наши дни), но авторам следует использовать html таким образом, чтобы результирующий план отражал их намерения.
Вы можете создавать разделы именно с этими элементами и ничего больше :
<section>
разделы<article>
разделы<nav>
разделы<aside>
разделы<h*>
2 (не все делают это, см. ниже)Разделы могут быть названы:
<h*>
созданные разделы называют себя<section|article|nav|aside>
разделы будут названы первыми,<h*>
если есть один<h*>
единственные, которые сами не создают разделыВ секциях есть еще одна вещь: следующие контексты (то есть элементы) создают «границы границ». Какие бы разделы они ни содержали, они являются частными для них
<body>
<td>
<blockquote>
<details>
,<dialog>
,<fieldset>
, И<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)
Это поднимает два вопроса:
В чем разница между
<article>
и<section>
?<section>
s как главы книг<article>
, по крайней мере, на самом низком уровне<article>
и ее комментарии<article>
также могут быть обернуты<article>
<section>
s<article>
как главы в книге<article>
s в a<section>
как стихи в объеме (в серии)Как
<header>
,<footer>
и<main>
подходят?<header>
а также<footer>
<header>
<footer>
<header>
<main>
<body>
то есть)<main>
может даже «скрыться» в некоторых подразделах документа, в то время как документ<header>
и<footer>
не может (эта разметка пометит верхний / нижний колонтитулы этого подраздела)<article>
разделах 31 на ум приходит: Схема, алгоритм, неявное секционирование
2 я использую в
<h*>
качестве краткого обозначения<h1>
,<h2>
,<h3>
,<h4>
,<h5>
и<h6>
3 ни один не
<main>
допускаются<aside>
или<nav>
, но это не удивительно. - В действительности:<main>
может скрываться только в (вложенных) нисходящих<section>
разделах или появляться на верхнем уровне, а именно<body>
источник
sections in an article are like chapters in a book, articles in a section are like poems in a volume
- лучшее и наиболее интуитивноеarticle
противsection
объяснения, которое я видел!Разметка для этого документа может выглядеть следующим образом:
Вы можете найти больше информации в этой статье на A List Apart .
источник
<header>
и<footer>
быть элементами уровня документа, а также внутри<section|article|nav|aside>
разделов?Я бы предложил прочитать вики-страницу W3 о структурировании HTML5 :
Они включают изображение, которое я убрал здесь:
источник
<section class="summary">
больше, чем<section id="summary">
? Если у вас есть несколько статей на одной странице, то последний метод приведет к дублированию идентификаторов на одной и той же странице - ложная ошибка HTML. Правильно?main
Тег хорошо бы добавить. Куда его поместить, будет решаться исходя из того, что является уникальным контентом на странице. В этом примере, я думаю, я бы просто поместил его вокруг центраsection
. Подробнее: w3.org/TR/2012/WD-html-main-element-20121217 «В разделе основного содержимого документа содержится содержимое, уникальное для этого документа, и исключается содержимое, повторяющееся в наборе документов, таких как сайт навигационные ссылки, информация об авторских правах, логотипы и баннеры сайта, а также поисковые формы. "[ объяснения в моем «основном ответе» ]
строка 7. раздел вокруг всего сайта? Или только div ?
Ни. Для стиля: используйте
<body>
, он уже там. Для секционирования / семантики: как подробно описано в моем примере HTML, его эффект противоречит полезности. Дополнительные обертки к уже завернутому контенту - это не улучшение, а шум.строка 8. Каждый раздел начинается с заголовка?
Нет, это выбор автора, куда помещать контент, обычно обозначаемый как «заголовок». И если этот заголовочный контент легко узнаваем без дополнительной маркировки, он может остаться без него
<header>
. Это тоже выбор автора.линия 23. Является ли это ДИВ правильно? или это должен быть раздел ?
Это
<div>
, вероятно, неправильно. Это зависит от намерений: только для стиля это может быть правильно. Если это для семантических целей, это неправильно: это должно быть<article>
вместо этого, как показано в моем другом ответе .<article>
Это также правильно, если это как для стилизации и секционирования вместе.<section>
выглядит неправильно, так как до или после этого нет подобных разделов, как в главах книги. (Это цель<section>
).строка 24. Разбить левый / правый столбец с помощью div .
Нет почему?
строка 25. Правильное место для тега статьи ?
Да, имеет смысл.
строка 26. Обязательно ли ставить h1 -tag в заголовок -tag?
Нет. Одинокий
<h*>
элемент, вероятно, никогда не должен входить в<header>
(но может, если хотите), так как уже ясно, что это заголовок того, что должно произойти. - Это имело бы смысл, если бы оно<header>
также охватывало, например, слоган (отмеченный знаком<p>
).строка 43. Содержание не связано с основной статьей, поэтому я решил, что это раздел, а не отступление .
Это недоразумение, что an
<aside>
должен быть «тангенциально связан » с контентом вокруг. Суть в том, что используйте,<aside>
если контент только « тангенциально связан» или нет вообще!Тем не менее, помимо того,
<aside>
что это достойный выбор, он<article>
все же может быть лучше, чем<section>
«горячие предметы» и «новые предметы» не следует читать как две главы в книге. Вы можете идеально выбрать одну из них, а не другую, как альтернативную сортировку чего-либо, а не как две части целого.строка 44. Н2 без заголовка
Отлично.
строка 53. раздел без заголовка
Ну, нет
<header>
, но<h2>
заголовок довольно ясно показывает, какая часть этого раздела является заголовком.строка 63. Разделите со всеми (не связанными) новостями
<article>
или<aside>
может быть лучше.строка 64. заголовок с h2
Обсуждали уже.
строка 65. Хм, div или раздел ? Или удалить этот DIV и использовать только статьи -tag
Точно! Удалить
<div>
.строка 105. Нижний колонтитул :-)
Очень разумно
источник
Согласно объяснению в моем «основном» ответе, рассматриваемый документ должен быть размечен в соответствии с планом.
В следующих двух таблицах я показываю:
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.
В следующей таблице показано мое предложение по улучшенной версии. Я использую следующую разметку:
<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.
источник
Основная ошибка: у вас есть «дивитит» во всем документе.
Почему это?
Вместо:
Чтобы стилизовать этот заголовок, используйте иерархию CSS: body> section> header> h1, body> section> header> h2
Ещё, ... строка 63: почему заголовок переносит h2 ?? Если вы не включили больше элементов в заголовок, просто используйте один h2.
Имейте в виду, ваша структура не для того, чтобы стилизовать документ, а для того, чтобы создать самодостаточный документ
Примените это к остальной части документа; Удачи ;)
источник
<hgroup>
больше не является частью HTML5Почему бы не иметь идентификаторы item_1, item_2 и т. Д. На самих тегах статьи? Нравится:
Кажется ненужным добавлять div-обертки. Значения идентификаторов не имеют смыслового значения в HTML, поэтому я думаю, что это было бы совершенно уместно - вы не говорите, что первая статья всегда item_1, просто item_1 в контексте текущей страницы. Идентификаторы не обязательно должны иметь какое-либо значение, не зависящее от контекста.
Кроме того, что касается вашего вопроса в строке 26, я не думаю, что тег <header> там требуется, и я думаю, что вы могли бы опустить его, поскольку он сам по себе в div "main-left". Если бы он был в основном списке статей, вы можете включить тег <header> только для согласованности.
источник
Я не отвечал на другие, потому что довольно сложно угадать, о чем ты говорил. Если есть еще вопросы, пожалуйста, дайте мне знать.
источник
article
обязательно должен быть из внешнего источника. w3schools.com/html5/tag_article.aspВот мой пример, в котором я работаю
источник
https://www.w3.org/TR/2014/REC-html5-20141028/sections.html#the-nav-element
источник
Я не думаю, что вы должны использовать тег в сводке новостей (строки 67, 80, 93). Вы можете использовать раздел или просто иметь вложенный div.
Статья должна быть в состоянии стоять самостоятельно и все еще иметь смысл или быть законченной. Как его неполная или просто выдержка, она не может быть статьей, а скорее разделом.
Когда вы нажимаете «читать дальше», следующая страница может
источник
РЕДАКТИРОВАТЬ: К сожалению, я должен исправить себя.
См. Ниже https://stackoverflow.com/a/17935666/2488942 для ссылки на спецификации w3, которые включают пример (в отличие от тех, на которые я смотрел ранее).
Но тогда .... Здесь хорошая статья об этом благодаря @Fez.
Мой оригинальный ответ был:
Как устроены спецификации w3:
предполагает, что
section
это более высокий уровень, чемarticle
. Как уже упоминалось в этом ответе,section
тематически связанные группы контента. Контент в статье, по моему мнению, в любом случае тематически связан, поэтому, по крайней мере, для меня это также означает, чтоsection
группы на более высоком уровне по сравнению сarticle
.Я думаю, что это должно быть использовано так:
или для новостного сайта:
источник
Строка 23. Правильно ли этот div? или это должен быть раздел? »
Нет -
main
для этой цели есть тег, который разрешен только один раз на страницу и должен использоваться в качестве оболочки для основного содержимого (в отличие от боковой панели или заголовка для всего сайта).http://www.w3.org/html/wg/drafts/html/master/grouping-content.html#the-main-element
источник
Я хочу уточнить этот вопрос более точно, поправьте меня, если я ошибаюсь. Давайте возьмем пример стены в Facebook
1.Wall идет под тегом «section», который обозначает, что он отделен от страницы.
2. Все посты имеют тег "article".
3. Затем у нас есть один пост, который находится под тегом «section».
3. У нас есть заголовок «X user post this», для этого мы можем использовать тег «заголовок».
4. Внутри поста у нас есть три раздела: «Изображения / текст», кнопка «Мне нравится поделиться» и поле для комментариев.
5.Для комментария мы можем использовать тег статьи.
источник
Согласно ответу Натана , это имеет смысл (для красных и оранжевых частей, возможно, вы могли бы использовать
div
s и / илиheader
иfooter
соответственно):источник