Что является допустимыми элементами HTML, если таковые имеются, который может содержаться в a <a>
тег?
Встраиваемые элементы (a, span, strong, em
среди прочих) могут содержать другие встраиваемые элементы и текстовые узлы. Якорь может содержать span, который может содержать текстовый узел.
В целом, элементы уровня блока могут содержать встроенные элементы и другие элементы блочного уровня. Как правило, встроенные элементы могут содержать только данные и другие встроенные элементы. Inherent in this structural distinction is the idea that block elements create "larger" structures than inline elements.
From http://www.w3.org/TR/html401/struct/global.html
As noted in other answers, you can't nest an a
in an a
.
См. раздел anchor спецификации.
<!ELEMENT A - - (%inline;)* -(A) -- anchor -->
Соответствующий раздел - (%inline;)* - (A)
, что означает "Все, что входит в группу %inline, исключая элементы A". %inline снабжен гиперссылкой, чтобы вам было легче его раскрыть.
Он может содержать обычный текст и встроенные элементы. Инлайн-элементы следующие:
TT | I | B | BIG | SMALL | EM | STRONG | DFN | CODE | SAMP |
KBD | VAR | CITE | ABBR | ACRONYM | A | IMG | OBJECT | BR |
SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO
Но A
не может быть вложен в другой A
, а вложение SCRIPT
не является сенсеем.
Тег якоря является инлайн-элементом, поэтому он может содержать другие инлайн-элементы (кроме других тегов якоря).
Если вы хотите поместить блочный элемент внутрь якоря, вы должны использовать инлайн-элемент и превратить его в блочный элемент с помощью CSS, вместе с самим тегом якоря.
Example:
<a href="page.html" class="blocklink"><span>eat me</span></a>
CSS:
.blocklink { display: block; }
.blocklink span { display: block; }
An tag can contain any Inline Element besides another
tag.