Можем ли мы использовать <a> непосредственно в теле или всегда в любом теге уровня блока?См. пример (XHTML)
-
21-09-2019 - |
Вопрос
Какой правильный?Этот:
<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;
}