<a> inside <p> — it&#39;s a good practice in text cases?</p></a>

时间:2013-12-09 17:30:46

标签: html

(✘)我认为这是错误的:

<ul>
    <li>Hello!</li>
</ul>

(✔)这是正确的:

<ul>
    <li><p>Hello!</p></li>
</ul>

但我不知道是否:

<ul>
    <li><p><a href="#">Hello!</a></p></li>
</ul>

比这更正确:

<ul>
    <li><a href="#">Hello!</a></li>
</ul>

我的哲学

在处理<p><h1|h2|h3|h4|h5|h6>之外的文字时,我感觉不一致。我认为HTML是三种文本的父亲:标题段落&amp;的提示即可。对我来说,这种模式之外的每一个文本都是错误的。

我在这里,现在要知道它是真的错误。是吗?

国外?

抱歉 - 我不知道另一个比SO更好的地方提出这样的问题。

从技术上讲......

是的,我知道从技术上讲,无论哪种方式都可行。

4 个答案:

答案 0 :(得分:2)

  

(✘)我认为这是错误的:

<ul>
    <li>Hello!</li>
</ul>

不,这是完全正确的。

  

(✔)这是正确的:

<ul>
    <li><p>Hello!</p></li>
</ul>

是的,这是,也是,正确。

唯一的区别是,在第一个示例中,您不表示文本是段落,而只是列表项;而在第二个中,您显示它是列表项内的一段文本。而且,在这种情况下,我倾向于选择前者(但这纯粹是品味和语义的问题),因为我不相信任何单个单词本身都不能构成整个段落。

  

但我不知道是否:

<ul>
    <li><p><a href="#">Hello!</a></p></li>
</ul>
  

比这更正确:

<ul>
    <li><a href="#">Hello!</a></li>
</ul>

它没有任何区别。

您似乎感到有责任将每个文本字符串包装在HTML元素中以表示其 textiness ,这是不必要的;只有在文本实际上是一个段落时才需要将文本包装在p内。

答案 1 :(得分:1)

如果你想问它是否合法,那么是的,这是合法的。

然而,如果您在段落中有链接,那么在段落中包含超链接是更好的做法,没有问题!

(不包括 html5 )但是你不能在超链接中启动整个段落,你可以使用div!

<ul>
    <li>Hello!</li>
</ul>

以上是正确的,所以是:

<ul>
    <li><p>Hello!</p></li>
</ul>

您可以在li中包含任何内容,将其包含在列表中。它无需仅a或仅p

但是这个:

<ul>
    <li><p><a href="#">Hello!</a></p></li>
</ul>

不同
<ul>
    <li><a href="#">Hello!</a></li>
</ul>

如何?因为p会为内容添加边距和填充。 p也有一些默认属性。

答案 2 :(得分:0)

不,您无法在p标记内启动a标记,并在a之外将其关闭。

答案 3 :(得分:0)

所有HTML版本:

您无法将<a>置于另一个<a>内。

除HTML5以外的所有HTML版本:

不允许<p>加入<a>