Проблема, которую вы видите в валидаторе, заключается в том, что <div>
является тегом уровня блока, а тег <a>
является встроенным тегом.
Встроенные теги не могут содержать теги уровня блокаВот почему валидатор жалуется.
На самом деле, это правило широко игнорируется, потому что в противном случае многие вещи становятся довольно сложными для превращения в ссылки.Кроме того, это относится только к более старым версиям HTML и xhtml (xhtml особенно суетлив об этом);текущий стандарт HTML5 действительно позволяет это, потому что они видели проблемы, вызванные наличием правила.
Таким образом, краткий ответ - использовать вместо этого HTML-тип документа (<!DOCTYPE HTML>
), и ваша проблема исчезнет.
«Правильный» ответ - стилизовать тег <a>
с помощью display:block;
или display:inline-block;
, чтобы он мог содержать элементы уровня блока.Это сделает это правильно синтаксически.Однако это обычно не удовлетворяет валидатору, поскольку он просто смотрит на типы отображения по умолчанию, а не на CSS.
В качестве альтернативы, переключите <div>
для <span>
.Это удовлетворит валидатор, и вы все равно можете использовать display:block
и друзей, чтобы заставить его работать как <div>
.
Надежда, которая помогает.