XHTML: размещение DIV в тегах A

Это alright размещать теги div внутри тегов привязки? Будет ли содержимое div перенаправлять страницу на href тега привязки?


person Francisc    schedule 15.09.2010    source источник
comment
Ваш XHTML не будет проверяться, если вы поместите элемент блочного уровня внутрь элемента встроенного уровня.   -  person Kevin    schedule 16.09.2010


Ответы (3)


Можно ли размещать теги div внутри тегов привязки?

Да, если:

  1. Вы используете HTML5/XHTML5; а также
  2. Тег привязки не находится во встроенном контексте. то есть потомок элемента, который позволяет только фразовое содержимое.

В противном случае нет.

В HTML5/XHTML5 элемент <a> не просто встроенный элемент, как в HTML4/XHTML1. Вместо этого у него прозрачная модель содержимого, что означает, что правила проверки его содержимого такие же, как если бы его там не было.

Так например

<div>
   <div>Hello World</div>
</div>

действителен, поэтому

<div>
   <a href="#">
      <div>Hello World</div>
   </a>
</div>

слишком.

Но

<p>
   <div>Hello World</div>
</p>

недействителен, поэтому

<p>
   <a href="#">
      <div>Hello World</div>
   </a>
</p>

тоже нет.

person Alohci    schedule 15.09.2010
comment
Спасибо за дополнительные разъяснения. - person Francisc; 16.09.2010

Нет, это определенно недопустимый HTML.

-Будет ли содержимое div перенаправлять страницу на href тега привязки? Я не совсем уверен в том, что вы имеете в виду в этом случае. Но это не содержимое div, за которым следует якорь, а атрибут href якоря.

person lock    schedule 15.09.2010
comment
Спасибо. Никаких блочных элементов внутри элементов, понял. - person Francisc; 16.09.2010
comment
@Francisc. В частности, нет элементов блочного уровня внутри встроенных элементов. Ниже приведены некоторые примеры встроенных элементов: a, strong, span. - person Jordan S. Jones; 16.09.2010

Если вы пытаетесь получить ссылку на уровне блока, вы можете просто использовать CSS:

a.block {
    display: block;
    /* everything else */
}

<a class="block">...</a>
person Casey Chu    schedule 15.09.2010