Можем ли мы использовать <a> непосредственно в теле или всегда в любом теге уровня блока?См. пример (XHTML)

StackOverflow https://stackoverflow.com/questions/1968122

Вопрос

Какой правильный?Этот:

<h2>heading 2</h2>
<p><a href="#" target="_blank" title="Opens in a new window">link 1</a></p>
<h2>heading 2 </h2>
<p><a href="#" target="_blank" title="Opens in a new window">link 2</a></p>
<h2>heading 2 </h2>
<p><a href="#" target="_blank" title="Opens in a new window">link 3</a></p>
<h2>heading 2 </h2>
<p><a href="#" target="_blank" title="Opens in a new window">link 4</a></p>

или это:

<h2>heading 2</h2>
<a href="#" target="_blank" title="Opens in a new window">link 1</a>
<h2>heading 2 </h2>
<a href="#" target="_blank" title="Opens in a new window">link 2</a>
<h2>heading 2 </h2>
<a href="#" target="_blank" title="Opens in a new window">link 3</a>
<h2>heading 2 </h2>
<a href="#" target="_blank" title="Opens in a new window">link 4</a>
Это было полезно?

Решение

@Jitendra, я согласен с твоей точкой зрения..но только если вы используете strict.dtd (HTML/XHTML)
Согласно рекомендации W3C (для строгий срок действия) ..тег <a> должен использоваться в блочном элементе.

Посмотрите на следующий пример:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
   <meta content="text/html; charset=utf-8" http-equiv="content-type"/>
   <title>example</title>
 </head>
 <body>You don't have sufficient privileges to access the page.<a href="www.google.co.in">Click here</a> to go back.
 </body>
</html>

Приведенный выше код выдает ошибку при проверке HTML.говоря

document type does not allow element "A" here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADDRESS" start-tag

Сделав dtd свободным/переходным, можно избавиться от ошибки..Для Strict HTML или Strict XHTML эта ошибка очевидна..

Надеюсь, это помогло..:)

С уважением-Infant Pro

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

Оба правы, оба подтвердят

Оба варианта хороши, но наличие плавающих встроенных элементов меня почему-то беспокоит.

Хотя меня никогда не волновало правило «неблочный элемент в блоке» при написании HTML-кода, тело элемент должен быть блочным элементом.(хотя я забыл, где это читал), т.е.оба ваших фрагмента HTML-кода верны.

Ни один из них не является действительно «правильным» семантически :-)

Поместите их в список и постарайтесь избегать target="_blank".Вероятно, нет причин ставить <p> вокруг каждого <a> (просто убедитесь, что вся партия находится в элементе уровня блока, если вы хотите проверить строго - хороший момент детский программист).

Если вы хотите <a> действовать как элемент уровня блока и таким образом удалить <p> просто используй

#somewrapper a
{
 display: block;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top