H1 на странице статьи - название сайта или название статьи? - PullRequest
57 голосов
/ 06 ноября 2008

На странице, ориентированной на статью (например, запись в блоге), элемент <h1> (заголовок уровня 1) обычно используется для разметки:

  • заголовок блога (то есть часто большой заголовок сайта в верхней части страницы, не для элемента <title>) или
  • название статьи

Какой лучший выбор и почему?

Владельцу сайта, который может захотеть выкрикнуть миру название своего сайта / блога, может показаться целесообразным использование заголовка уровня 1 вокруг названия сайта.

С точки зрения того, что вы пытаетесь донести до пользователя, название сайта имеет меньшее значение: содержание статьи - это то, что вы пытаетесь донести, а все остальное содержимое сайта является второстепенным. Поэтому лучше использовать <h1> для заголовка статьи.

Я считаю, что элемент <h1> должен фокусироваться на названии статьи, а не на заголовке сайта или другом контенте. Это никоим образом не является популярным соглашением.

Примеры:

  • Джоэл Спольски использует <h1> для заголовка статьи и привязку для заголовка сайта
  • Джефф Этвуд использует нет <h1> вообще , <h2> для заголовка статьи и привязку к названию сайта
  • 37 Signals 'SVN использует <h1> для названия сайта и привязку для заголовка статьи

Это три разных подхода на трех сайтах, где можно ожидать серьезного рассмотрения правильной семантической разметки.

Я думаю, что Джоэл правильно понял Джеффа. Я весьма удивлен выбором разметки людьми 37Signals.

Мне кажется, это довольно простое решение: что имеет наибольшее отношение к потребителю статьи? Название статьи. Поэтому оберните название статьи в элемент <h1>. Готово.

Я не прав? Есть ли дополнительные соображения, которые я пропускаю? Я прав? Если да, то почему подход «<h1> для заголовка статьи» не используется чаще?

Является ли решение о том, где использовать элемент <h1> столь же неизменным, как я его назвал? Или есть еще какие-то субъективные соображения?

Обновление : Спасибо за ответы на все вопросы. Я был бы очень признателен за то, как использование <h1> для названия статьи вместо названия сайта повышает удобство использования и доступность (или нет, в зависимости от обстоятельств). Ответы, основанные на фактах, а не только на личном предположении, получат много бонусных очков!

Ответы [ 8 ]

32 голосов
/ 06 ноября 2008

Существует Совет по обеспечению качества W3C по этой теме:

<h1> - это элемент HTML для заголовок документа первого уровня:

  • Если документ в основном например, что посмотреть и делать в Женеве, на высшем уровне заголовок, вероятно, такой же, как заглавие.

  • Если это часть Коллекция, например, раздел на Собаки в сборнике страниц о домашние животные, то заголовок верхнего уровня следует принять определенное количество контекст; просто напишите <h1>Dogs</h1> в то время как название должно работать в любом Контекст: Собаки - Ваш путеводитель по домашним животным.

12 голосов
/ 08 ноября 2008

Как пользователь программы чтения с экрана, уровень заголовка не имеет значения, если он согласован. Различные блоги используют разные соглашения, поэтому не существует стандартного способа сделать его более доступным. Убедиться, что заголовки соответствуют уровню контента, важнее, чем какой уровень заголовка используется. Например, при отображении серии сообщений в блоге с комментариями все сообщения в блоге могут иметь заголовок уровня 2, а в начале комментариев - заголовок уровня 3. Для примера простых в навигации заголовков найдите любую статью Википедии с несколькими разделами и подразделы. Я могу легко пропустить основные разделы, используя мои средства чтения с экрана, чтобы перейти к заголовку любого уровня 2, и если я хочу перейти к подразделам данного раздела, я перейду к следующему заголовку.

11 голосов
/ 06 ноября 2008

На домашней странице вашего блога я бы использовал H1 для обозначения заголовка сайта и H2 для заголовков отдельных постов блога, которые публикуются на первой странице.

При вводе конкретной статьи я бы использовал H1 для заголовка статьи и привязку для заголовка сайта.

Это хорошая и семантическая настройка, которая также будет оценена Google при сканировании вашего сайта.

3 голосов
/ 06 ноября 2008

В Википедии тег h1 содержит название статьи и заголовки в документе, начинающиеся с h2. Имя Wikipedia является частью тега title в html-заголовке. Я также думаю, что это путь. Поэтому для блогов я бы хотел сделать Джоэла Спольски в приведенных вами примерах.

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

2 голосов
/ 06 ноября 2008

Часть <head> HTML-страницы имеет элемент с именем <title>. Как следует из названия, это для названия сайта.

HTML используется для структурирования страницы в виде, пригодной для машинного анализа, а не для разметки. Если бы речь шла только о компоновке, вы могли бы использовать только блоки <div> и <span> с разными классами / идентификаторами и применять к ним CSS. Вместо

<h2>Sub Header</h2>

Я мог бы использовать

<div class="header2>Sub Header</div>

и где-то есть некоторый код CSS, который сделает этот <div> похожим на h2 (размер шрифта, жирный шрифт и т. Д.). Разница в том, что компьютер не может знать, что мой <div> на самом деле является заголовком второго уровня в первом примере (как он должен это знать? Я мог бы назвать его не так, как «header2»), однако в первом случае, он знает, что это заголовок второго уровня, потому что это элемент <h2>, и если он хочет показать пользователю структурированный список заголовков страницы, он может сделать это

  • Заголовок верхнего уровня
    • Sub Header
      • Sub Sub Header
    • Подзаголовок
    • Sub Header
  • Заголовок верхнего уровня
    • Sub Header
      • Sub Sub Header
      • Sub Sub Header
    • Подзаголовок
      :

путем поиска элементов H1 / H2 / H3 / ... и структурирования их, как указано выше. Так что, если компьютер попытается выяснить заголовок страницы, где он будет его искать? В элементе с именем <title> или в элементе с именем <h1>? Подумайте об этом на мгновение, и у вас есть ответ.

Конечно, вы можете сказать: «Но заголовок не виден на странице». Ну, это обычно видно где-то в окне браузера (заголовок окна или, по крайней мере, заголовок вкладки) - однако, вы можете захотеть, чтобы оно также было видно на странице - я могу это понять. Однако, что говорит об этом? Кто сказал, что вы не можете повторить это? Но мне интересно, стоит ли использовать для этого элемент h1.

<html>
<head>
<title>SOME TITLE</title>
</head>
:
<body>
<div id="title">SOME TITLE</div>
:
</body>
</html>

Используйте CSS для стилизации #title так, как вам нравится. Сделайте его очень большим и очень смелым, и, если хотите, сделайте его привлекательным, ничто не говорит о нем. Автоматические парсеры страниц обычно в некоторой степени игнорируют div и span, поскольку это им ничего не говорит (это элементы, используемые для макета страницы для читателя, но они ничего не говорят о структуре страницы. LAYOUT - это не STRUCTURE , вы можете применять стиль только к определенным структурным элементам для создания макета, но один не следует путать с другим). Тем не менее, компьютер будет знать, каков заголовок страницы, он знает это благодаря элементу title.

1 голос
/ 25 января 2016

H1 на странице статьи - название сайта или название статьи?

Оба. Эта статья является информативной: Правда о нескольких тегах H1 в эпоху HTML5 .

1 голос
/ 22 июня 2013

Для типичного сайта, например блог, h1 должен содержать заголовок сайта. Да, на каждой странице сайта.

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

<ul id="site-navigation">
  <li><a href="/">Home</a></li>
  <li><a href="/about">About me</a></li>
  <li><a href="/contact">Contact</a></li>
</ul>

Это #site-navigation повторяется на каждой странице сайта. Он представляет собой навигацию по сайту, а не навигацию по страницам. Разница важна! {Навигация по странице может быть оглавлением (как в статье в Википедии) или нумерацией страниц для длинной статьи.}

Если вы используете заголовок статьи в качестве h1, навигация по сайту будет охватываться этим заголовком.

<body>
  <div>John’s blog</div> <!-- the site title -->
  <h1>My first blog post</h1> <!-- the article title -->
  <p>…</p>
  <h2>Navigation</h2>
  <ul id="site-navigation">…</ul> <!-- the site-wide navigation -->
</body>

Итак, эта разметка передает: навигация (→ начатая h2) является частью статьи (→ начатая h1). Но это не так, эта навигация не является навигацией для статьи. Ссылки действительно являются частью всего сайта, и сайт представлен заголовком сайта.

Проблема становится понятнее, если статья также содержит подзаголовки:

<body>
  <div>John’s blog</div> <!-- the site title -->
  <h1>My first blog post</h1> <!-- the article title -->
  <p>…</p>
  <h2>Why I’m blogging</h2>
  <p>…</p>
  <h2>Why you should read my blog</h2>
  <p>…</p>
  <h2>Navigation</h2>
  <ul id="site-navigation">…</ul> <!-- the site-wide navigation -->
</body>

Как видите, нет способа отличить подзаголовки статьи от навигации. Похоже, статья имеет три подзаголовка: «Почему я веду блог», «Почему вы должны читать мой блог» и «Навигация».

Поэтому, если вместо этого мы используем h1 для заголовка сайта и h2 для заголовка статьи, навигация может быть в пределах заголовка сайта, также используя h2:

<body>
  <h1>John’s blog</h1> <!-- the site title -->
  <h2>My first blog post</h2> <!-- the article title -->
  <p>…</p>
  <h2>Navigation</h2>
  <ul id="site-navigation">…</ul> <!-- the site-wide navigation -->
</body>

Теперь эта разметка передает: есть сайт под названием «Блог Джона» (→ запущенный h1), и он содержит статью (→ запущенную первым h2) и навигацию по сайту (→ запущенную второй h2). Подзаголовки статьи теперь, конечно, будут h3.


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

HTML5 формализует это с помощью алгоритма секционирования / выделения . Он решает многие проблемы с изложением, которые у вас могли возникнуть с HTML 4.01, потому что порядок содержимого теперь может быть (в основном) свободным, и вам не нужно «придумывать» реальные заголовки, если вы этого не хотите, благодаря section / article / nav / aside. Но также в HTML5 заголовок сайта должен быть h1, который является дочерним по отношению к body, но не дочерним по отношению к любому элементу секционирования / корню. Все остальные разделы находятся в области заголовка этого сайта.

0 голосов
/ 06 ноября 2008

Должен быть только один, и должен быть только один

h1
; обычно это заголовок страницы. Затем следует h2, h3 и т. Д.

Так что ваша страница может выглядеть так (без всех других HTML-тегов)

h1
  h2
  h2
    h3
..etc
...