Стандарт связывания элементов тега <h>

Либо:

<a href = "#"><h1>text here</h1></a>

или же

<h1><a href = "#">text here</a></h1>

"правильный". Есть ли польза от использования первого, мне он кажется более логичным. Возможно, с точки зрения SEO?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
0
654
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий
<h1><a href = "#">text here</a></h1>

правильно, поскольку HTML не допускает блочного элемента (<h1>) внутри встроенного элемента (<a>) (src). ваш первый пример не удастся Проверка.

Generally, block-level elements may contain inline elements and other block-level elements. Generally, inline elements may contain only data and other inline elements. Inherent in this structural distinction is the idea that block elements create "larger" structures than inline elements.

Ваш второй пример - единственная разрешенная структура. Первый помещает элемент уровня блока внутрь встроенного элемента, а HTML этого не допускает. Браузеры могут разрешить это, но это недействительный HTML.

В данном конкретном случае особой разницы нет. Однако следует отметить несколько моментов:

  • <h*> - это блочные элементы, <a> - встроенный элемент по умолчанию. Как указывали другие, XHTML не допускает блочных элементов во встроенных элементах, поэтому, если вы не переопределили их стиль отображения в CSS, <a><h1></h1></a> недействителен.
  • <a href = "#"><h1>text here</h1></a> - это ссылка, которая может иметь несколько дочерних узлов. В этом случае у него есть только дочерний узел <h1>, но ничто не мешает вам добавить еще.
  • С другой стороны, <h1><a href = "#">text here</a></h1> - это заголовок, который может отключать несколько узлов. Вы можете добавлять к нему всевозможные дочерние узлы, например метки и т. д.

Так что это в основном логическая разница без каких-либо практических различий в данном конкретном случае.

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

 <a><h1>foo</h1></a>

попадает в

 <a></a>
 <h1><a>foo</a></h1>
 <a></a>

И это может привести к результатам интересно. ;)

Другие вопросы по теме