Раздел против статьи HTML5

201

У меня есть страница, состоящая из различных «разделов», таких как видео, новостная лента и т. Д. Я немного запутался, как представлять их в HTML5. В настоящее время я использую их как HTML5 <section>, но при дальнейшей проверке выясняется, что они будут более правильным тегом <article>. Может ли кто-нибудь пролить свет на это для меня?

Ни одна из этих вещей не является сообщениями в блоге или «документами» в прямом смысле этого слова, поэтому трудно понять, какой элемент применять.

ура

РЕДАКТИРОВАТЬ: я решил использовать articleтег, так как он, кажется, тег контейнера для несвязанных элементов, которые, я думаю, мои "разделы". Однако настоящая статья о тэгах, похоже, вводит в заблуждение, и хотя они говорят, что HTML5 был разработан с большим вниманием к веб- приложениям о тэгах, по- , я считаю, что многие тэги в большей степени ориентированы на блог / документ.

В любом случае, спасибо за ваши ответы, это выглядит довольно субъективно.

Джеймс Хей
источник
5
это на самом деле не имеет значения. Используйте то, что имеет смысл для вас. Лично я бы использовал sectionэто
Илья Чоли
@illia choly: я согласен с тобой, нет реального или неправильного.
Ширгилл Фархан
1
Аккуратное объяснение с примером MDN
randominstanceOfLivingThing

Ответы:

143

На вики-странице W3 о структурировании HTML5 говорится:

<section>: Используется либо для группировки разных статей по разным целям или предметам, либо для определения разных разделов одной статьи.

А затем отображает изображение, которое я очистил:

введите описание изображения здесь

Также описано, как использовать <article>тег (по той же ссылке W3, что и выше):

<article>связано <section>, но заметно отличается. Принимая во внимание, <section>что для группировки отдельных разделов контента или функциональных возможностей, <article>предназначен для содержания связанных отдельных отдельных частей контента, таких как отдельные сообщения в блоге, видео, изображения или новости. Подумайте об этом так: если у вас есть несколько элементов контента, каждый из которых подходит для самостоятельного чтения и имеет смысл синдицировать их как отдельные элементы в ленте RSS, тогда <article>он подходит для их разметки.

В нашем примере <section id="main">содержатся записи блога. Каждая запись в блоге будет подходящей для синдикации в качестве элемента в RSS-канале и будет иметь смысл, если ее читать самостоятельно, вне контекста, поэтому <article>идеально подходит для них:

<section id="main">
    <article>
      <!-- first blog post -->
    </article>

    <article>
      <!-- second blog post  -->
    </article>

    <article>
      <!-- third blog post -->
    </article>
</section>

Просто да? Имейте в виду, что вы также можете вкладывать разделы в статьи, где это имеет смысл. Например, если каждое из этих сообщений в блоге имеет непротиворечивую структуру отдельных разделов, то вы также можете поместить разделы в свои статьи. Это может выглядеть примерно так:

<article>
  <section id="introduction">
  </section>

  <section id="content">
  </section>

  <section id="summary">
  </section>
</article>
Джастин
источник
13
Дополнительно: <main> может использоваться для переноса элементов между верхним и нижним колонтитулом (синие блоки на изображении). <figure> оборачивает изображения внутри статей или разделов.
логическое устройство
2
Прекрасная работа. Это должен быть принятый ответ. Я согласен с логикой, которую вы должны добавить main.
Чак Ле Батт
1
Вы должны обновить картинку с разделом в статьях.
К - Токсичность в СО растет.
Я чувствую, что эта война между статьей и разделом пойдет одна сейчас из-за путаницы. Но Джастин Им на 100% согласен с тем, что вы используете раздел над статьей, поскольку раздел относится к частям документов (как вы уже показали), где статья является автономным, независимым контентом ВНУТРИ документа (и, следовательно, его разделов). Семантически термин «раздел» просто имеет больше смысла как замена старых разделов в любом случае. Хорошая работа!
Стокли
1
Вы также можете использовать <header> и <footer> внутри <article>, если вам нужно что-то более конкретное, чем <section>
Ric
130

Похоже, вы должны обернуть каждый из «разделов» (как вы их называете) в <article>теги и записи в статье в<section> теги.

Спецификация HTML5 гласит (раздел):

Элемент section представляет общий раздел документа или приложения. В этом контексте раздел представляет собой тематическую группу контента, обычно с заголовком. [...]

Примерами разделов могут быть главы, различные страницы с вкладками в диалоговом окне с вкладками или пронумерованные разделы диссертации. Домашняя страница веб-сайта может быть разбита на разделы для введения, новостей и контактной информации.

Заметка . Авторам рекомендуется использовать элемент article вместо элемента section, если имеет смысл объединить содержимое этого элемента.

И для статьи

Элемент article представляет собой автономную композицию в документе, странице, приложении или сайте и, в принципе, может независимо распространяться или использоваться повторно, например, в синдикации. Это может быть сообщение на форуме, статья в журнале или газете, запись в блоге, пользовательский комментарий, интерактивный виджет или гаджет или любой другой независимый элемент контента.

Я думаю, что то, что вы называете «разделами» в ОП, соответствует определению статьи, так как я вижу, что они могут быть независимо распространяемыми или повторно используемыми. .

Обновление: некоторые незначительные изменения текста дляarticle в последнем проекте редакции для HTML 5.1 (изменения курсивом):

Элемент article представляет собой полный или самодостаточную композицию в документе, странице, приложении или сайте и, в принципе, может независимо распространяться или использоваться повторно, например, в синдикации. Это может быть сообщение на форуме, статья в журнале или газете, запись в блоге, пользовательский комментарий, интерактивный виджет или гаджет или любой другой независимый элемент контента.

Кроме того, обсуждение списка рассылки Public HTML примерно articleв январе и феврале 2013 года.

steveax
источник
17
Во время поиска в Интернете я наткнулся на юридический документ, который читал Article 1, Section 2, Clause 3. Я надеюсь, что это поможет мне вспомнить логику.
commonpike
3
Я не согласен в некоторой степени, но я также считаю, что они могут быть переключены в зависимости от контекста. Чтение описаний спецификаций подсказывает мне, что должно быть наоборот, если articleвиджет действует как «виджет». section: «тематическая группировка» и «раздел документа». article: "автономный" и "виджет". Рассмотрим пример домашней страницы, такой как codepen.io/anon/pen/iDEwf
daleyjem,
2
Почему они говорят, что один пост на форуме делает статью? Сообщение на форуме не является полным без остальной части темы imho.
masterxilo
7
Это задом наперед. W3C четко заявляет, что sectionэто тематическая группировка контента и articleотдельный элемент (то есть, который можно сгруппировать в тему). Думайте об этом как о газете: вы найдете много статей в каждом разделе. Например, обзорные статьи в разделе «Развлечения».
Чак Ле Батт
3
Согласиться с @Chuck здесь. В моей книге этот ответ полностью задом наперед. Ответ Джастина куда более уместен. Ну да ладно, думаю, спецификация оставляет много места для интерпретации. Не уверен, если это плохо или хорошо.
maryisdead
39

Я бы использовал <article>для текстового блока, который совершенно не связан с другими блоками на странице. <section>с другой стороны, будет разделителем для разделения документа, которые имеют отношение друг к другу.

Теперь я не уверен, что у вас есть в ваших видео, новостной ленте и т. Д., Но вот пример (нет НАСТОЯЩЕГО правильного или неправильного, только руководство о том, как я использую эти теги):

<article>
    <h1>People</h1>
    <p>text about people</p>
    <section>
        <h1>fat people</h1>
        <p>text about fat people</p>
    </section>
    <section>
        <h1>skinny people</p>
        <p>text about skinny people</p>
    </section>
</article>
<article>
    <h1>Cars</h1>
    <p>text about cars</p>
    <section>
        <h1>Fast Cars</h1>
        <p>text about fast cars</p>
    </section>
</article>

Как видите, разделы по-прежнему актуальны друг для друга, но пока они находятся внутри блока, который их группирует. Разделы не должны быть внутри статей. Они могут быть в теле документа, но я использую разделы в теле, когда весь документ представляет собой одну статью.

например

<body>
    <h1>Cars</h1>
    <p>text about cars</p>
    <section>
        <h1>Fast Cars</h1>
        <p>text about fast cars</p>
    </section>
</body>

Надеюсь, это имеет смысл.

мрин
источник
5
I'd use <article> for a text block that is totally unrelated to the other blocks on the page.Я знаю, что вы написали это еще в 2011 году, но не для этого ли этот <aside>тег?
MyDaftQuestions
19

Мне нравится придерживаться стандартного значения используемых слов: An articleбудет применяться, ну, в общем, к статьям. Я бы определил посты в блоге, документы и новостные статьи какarticles . Разделы, с другой стороны, будут относиться к элементам layout / ux: sidebar, header, footer будут разделами. Однако это все моя личная интерпретация - как вы указали, спецификация для этих элементов не очень хорошо определена.

Поддерживая это, w3c определяет articleэлемент как раздел контента, который может самостоятельно существовать. Сообщение в блоге может стоять само по себе как ценный и потребляемый элемент контента. Однако заголовок не будет.

Вот интересная статья о безумии одного человека, пытающегося провести различие между двумя новыми элементами. Основная идея этой статьи, которую я тоже считаю правильной, состоит в том, чтобы попытаться использовать любой элемент, который, по вашему мнению, вам больше всего нравится, представляет собой то, что он содержит.

Что более проблематично, так это то, что статья и раздел очень похожи. Все, что их разделяет, это слово «самодостаточный». Решить, какой элемент использовать, было бы легко, если бы существовали жесткие и быстрые правила. Вместо этого это вопрос интерпретации. Вы можете иметь несколько статей в разделе, вы можете иметь несколько разделов внутри и статью, вы можете вкладывать разделы в разделы и статьи внутри разделов. Вам решать, какой элемент наиболее семантически уместен в любой конкретной ситуации.

Вот очень хороший ответ на тот же вопрос здесь, на SO

Майкл Джаспер
источник
8

Приведенная ниже блок-схема может помочь при выборе одного из различных семантических элементов HTML5: введите описание изображения здесь

Капитан разумный
источник
5

Раздел

  • Используйте это для определения раздела вашего макета. Это может быть mid, left, right и т.д ..
  • Это имеет значение связи с каким-то другим элементом, проще говоря, это ЗАВИСИМО.

Статья

  • Используйте это там, где у вас есть независимый контент, который имеет смысл сам по себе.

  • Статья имеет свой законченный смысл.

Ананд Сингх
источник
3

Раздел - это, по сути, оболочка для h1(или других hтегов) и соответствующий контент. По articleсути, это документ в вашем документе, который повторяется или разбивается на страницы ... как каждый пост в вашем документе может быть статьей, или каждый комментарий к вашему документу может быть статьей.

Ник Мэннинг
источник
1

также для синдицированного контента «Авторам рекомендуется использовать элемент article вместо элемента section, когда было бы целесообразно синдицировать содержимое элемента».

альберт
источник
0

Моя интерпретация такова: я думаю о YouTube, у него есть раздел комментариев, а внутри раздела комментариев есть несколько статей (в данном случае это комментарии).

Таким образом, раздел похож на div-контейнер, содержащий статьи.

userX
источник
-2

Article и Section являются семантическими элементами HTML5. Раздел - это общий раздел веб-страницы на уровне блока, но соответствующий содержанию нашей веб-страницы. Статья также является блочным уровнем, но статья относится к отдельному сообщению в блоге, комментарию к веб-странице.

Как статья, так и раздел должны включать заголовочные элементы h2-h6.

Для записи в блоге используйте следующий синтаксис статьи и раздела.

<article>
         <h1>Heading 1</h1>
         <p>Article Description</p>
         <section id="sec1">
                <h2>Section Heading</h2>
                <p>Section Description</p>
         </section>
         <section id="sec2">
                <h2>Section Heading</h2>
                <p>Section Description</p>
         </section>
</article>
Авинаш Малхотра
источник