Значения тега раздела HTML5?
Я знаю есть тонны вопросов по этой теме, но я не могу найти авторитетный источник ответа.
Это официальное определение и wiki page, а там больше документации, но там они не объясняют правильное использование, если не в очень простых примерах или в разных пути.
То, что я "понял" до сих пор:
<section>
определяет часть (раздел) страницы, такую как blogrolls, новости заголовков, список записей блога, список комментариев и все, что может быть с общей темой.
<article>
определяет контент, который имеет смысл, отчужденный от остальной части страницы (?) и имеющий одну тему (запись в блоге, комментарий, статья и т.д.).
Но, внутри <article>
, мы можем разделить его части в разделах с помощью <section>
, и в этом случае он имеет функцию контейнера для маркировки глав большего текста.
Уверенность
Если эти предложения правильны (или частично исправлены), это означает, что <section>
имеет два совершенно разных случая использования.
У нас может быть страница, написанная таким образом:
<!DOCTYPE html>
<html lang=en>
<head>
<meta charset=utf-8>
<title>Fruits</title>
</head>
<body>
<h1>Fruits war blog</h1>
<section id="headlineNews"> <!-- USED AS CONTAINER -->
<h1>What new about fruits?</h1>
<article><h1>Apples are the best</h1>Apples are better than bananas</article>
<article><h1>Apple cakes</h1>With apples you can prepare a cake</article>
</section>
<section id="blogEntries"> <!-- USED AS CONTAINER -->
<h1>Articles about fruits</h1>
<article>
<h1>Apples vs Bananas</h1>
<section> <!-- USED AS CHAPTER -->
<h2>Introduction:</h2>
Bananas have always leaded the world but...
</section>
<section> <!-- USED AS CHAPTER -->
<h2>The question:</h2>
Who is the best? We don't know so much about apples...
</section>
</article>
</section>
</body>
</html>
И вот как выглядит Outline:
1. Fruits war blog
1. What new about fruits?
1. Apples are the best
2. Apple cakes
2. Articles about fruits
1. Apples vs Bananas
1. Introduction:
2. The question:
Итак, <section>
считается с двумя полностью разными и не связанными смысловыми значениями?
Правильное использование:
<!-- MY DOUBT -->
<section> <!-- USED AS CONTAINER -->
<article>
<section></section> <!-- USED AS CHAPTER -->
</article>
</section>
в этом напыщенном пути?
Я обнаружил, что можно использовать в обратном порядке:
<!-- FROM W3C -->
<article> <!-- BLOG ENTRY -->
<section> <!-- USED AS CHAPTER ABOUT COMMENTS -->
<article></article> <!-- COMMENT -->
</section>
</article>
Но я не могу найти ответ на то, как я писал ниже.
Я думаю, прочитал обсуждение, где группа W3C написала основу тега <section>
, может быть полезна, но я не могу ее найти.
N.B. Я ищу ответы, задокументированные официальными источниками
Ответы
Ответ 1
http://www.w3.org/wiki/HTML/Elements/section не является официальным определением section
. section
определенный в спецификации HTML5, которая в настоящее время является рекомендацией кандидата (которая представляет собой снимок Редактор проекта).
В CR, section
определяется как:
Элемент section
представляет общий раздел документа или приложения. Раздел в этом контексте представляет собой тематическую группировку контента, обычно с заголовком.
section
представляет собой элемент sectioning content (вместе с article
, aside
и nav
). Эти секционирующие элементы и заголовки (h1
- h6
) создают outline.
Следующие три примера семантически эквивалентны (то же значение, один и тот же план):
<!-- example 1: using headings only -->
<h1>My first day</h1>
<p>…</p>
<h2>Waking up</h2>
<p>…</p>
<h2>The big moment!</h2>
<p>…</p>
<h2>Going to bed</h2>
<p>…</p>
<!-- example 1: using section elements with corresponding heading levels -->
<section>
<h1>My first day</h1>
<p>…</p>
<section>
<h2>Waking up</h2>
<p>…</p>
</section>
<section>
<h2>The big moment!</h2>
<p>…</p>
</section>
<section>
<h2>Going to bed</h2>
<p>…</p>
</section>
</section>
<!-- example 1: using section elements with h1 everywhere -->
<section>
<h1>My first day</h1>
<p>…</p>
<section>
<h1>Waking up</h1>
<p>…</p>
</section>
<section>
<h1>The big moment!</h1>
<p>…</p>
</section>
<section>
<h1>Going to bed</h1>
<p>…</p>
</section>
</section>
Таким образом, вы можете использовать section
всякий раз, когда (*) используете h1
- h6
. И вы используете section
, когда вам нужна отдельная запись в контуре, но не можете (или не хотите) использовать заголовок.
Также обратите внимание, что header
и footer
всегда принадлежат к его ближайшему секвенциальному содержимому предка (или к корню секции, например, body
, если нет элемента секционирования). Другими словами: каждый элемент section
/article
/aside
/nav
может иметь свой собственный header
/footer
.
article
, aside
и nav
являются, так сказать, более конкретными вариантами элемента section
.
два совершенно разных случая использования
Эти два варианта использования не совсем разные. В случае с "контейнером" вы можете сказать, что section
представляет главу документа, а в случае "глава" section
представляет собой главу статьи/контента (которая, конечно же, является частью документа).
Таким же образом некоторые заголовки используются для обозначения частей веб-страницы (например, "Навигация", "Пользовательское меню", "Комментарии" и т.д.), а некоторые заголовки используются для заголовка содержимого ( "Мой первый день" ) "Мои любимые книги" и т.д.).
Ответ 2
ОК, вот что я собрал из официальных источников.
MDN:
Элемент HTML Section() представляет собой общий раздел документа, то есть тематическую группировку содержимого, обычно с заголовком.
Примечания по использованию:
Если имеет смысл отдельно разобрать содержимое элемента, используйте вместо него элемент.
Не используйте элемент как общий контейнер; для чего это важно, особенно если секционирование предназначено только для стилизации. Эмпирическое правило состоит в том, что раздел должен логически отображаться в контуре документа.
Путеводитель по Shay Howe:
Секция с большей вероятностью путается с div, чем с статьей. В качестве элемента уровня блока раздел определен для представления общего документа или раздела приложения.
Лучший способ определить, когда использовать раздел по сравнению с div, - это посмотреть на фактический контент. Если блок контента может существовать как запись в базе данных и явно не нужен в качестве стилей CSS-стиля, то элемент раздела наиболее применим. Разделы должны использоваться для разбивки страницы вверх, предоставления естественной иерархии и, как правило, будет иметь правильный заголовок.
dev.opera.com
В принципе, элемент статьи предназначен для автономных фрагментов контента, которые имеют смысл вне контекста текущей страницы и могут быть прекрасно объединены. Такие фрагменты контента включают сообщения в блогах, видео и транскрипцию, новость или отдельную часть серийной истории.
Элемент раздела, с другой стороны, предназначен для разбиения содержимого страницы на разные функции или области предметов или разбиения статьи или истории на разные разделы.
Ответ 3
<article>
и <section>
являются обоими разделами. Вы можете вставить один секционирующий элемент внутри другого, чтобы срезать внешний элемент на секции.
HTML Living Standard, 4.4.11:
... Разделение элементов содержимого всегда считается подразделением их ближайшего корневого корня предка или его ближайшего элемента-предка секционирующего содержимого, в зависимости от того, что ближе всего, независимо от того, какие подразумеваемые разделы могут создавать другие заголовки....
Вы можете рассматривать <section>
как общий элемент секционирования. Это как <div>
, который определяет раздел в его ближайшем родительском разрезе (или ближайший корень секционирования, который может быть <body>
).
An <article>
также является разделом, но он имеет некоторую семантику. А именно, он представляет собой контент, который является самодостаточным (то есть, возможно, это может быть его собственная страница, и это все равно имеет смысл).
Ответ 4
Здесь официальный w3c принимает раздел:
http://www.w3.org/wiki/HTML/Elements/section
Цитата: "Элемент [section] представляет собой общий раздел документа или приложения".
Я думаю, теоретически, если у вас есть статья внутри статьи, то ваш пример вложенных выборок может работать. Но почему у вас есть статья в статье? Делает мало смыслового смысла.