我们可以使用<a> directly in the body, or it should always in any block level tag? See example (XHTML) </a>

时间:2009-12-28 05:39:39

标签: html xhtml w3c w3c-validation semantic-markup

哪个是对的?这样:

<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>

5 个答案:

答案 0 :(得分:3)

两者都是对的,都会验证

答案 1 :(得分:1)

两者都很好,但浮动内联元素因某种原因困扰我

答案 2 :(得分:0)

@Jitendra,我同意你的意见..但只有你使用的是strict.dtd(HTML / XHTML)
根据W3C建议(适用于strict dtd)..标记<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变得宽松/过渡你可以摆脱错误..对于严格的HTML或严格的XHTML,这个错误很明显..

希望它有所帮助.. :)

问候 - 婴儿专业

答案 3 :(得分:0)

虽然在编写HTML代码时我从未关心“块中元素的非块”规则,但 body 元素应该是块元素。 (我忘记了我在哪里阅读它),即你的两个HTML代码片段都是正确的。

答案 4 :(得分:0)

它们都不是真正的'正确'语义: - )

将它们作为列表放置并尝试避免使用target =“_ blank”。可能没有理由在每个<p>周围放置一个<a>(如果你想要严格验证,那么确保整个批次都在块级元素中 - 好点婴儿程序员)。

如果您希望<a>充当块级元素,那么删除<p>只需使用

#somewrapper a
{
 display: block;
}