Раздел против статьи 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 года.


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



5

Раздел

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

Статья

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

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


3

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


1

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


0

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

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


-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>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.