嵌套在html中的段落中列出

时间:2010-07-07 01:38:31

标签: html markup xhtml-1.0-strict

似乎(严格)html不允许在<p>内嵌套任何非内联元素,但是我应该如何呈现包含列表的段落(通常在自然文本中出现的内容) )。我看到三个答案似乎都不满意:

  • 列表不应该出现在段落中。 (我不打算进行文化辩论,但我当然希望html不会成为决定写作风格的地方。)
  • 将文本分为段落,然后是列表,然后是带有后置文本的第二段。这看起来很糟糕,因为现在我有<p>部分的段落,这对于试图在更加语义的方向上移动的标记来说似乎很糟糕。
  • 假段落使用一些<div class="mypara"> - 这看起来像是一种绕过整个事情并放弃使用带有正确文本语义的标记的坏方法。

还有其他方法可以做到这一点,语义正确且有效吗?

5 个答案:

答案 0 :(得分:9)

HTML 5中的段落,从最新的工作草案开始,被定义为仅包含短语元素的流元素。列表也被定义为流元素,并且不能包含在段落中。无论你认为段落的定义是什么,这都是HTML中术语的正式定义,我认为它不太可能改变。

除了你提到的两个,你可以考虑两种可能性:

  • 如果适用,则考虑使用比段落更广泛的流量元素,例如sectionnavheaderfooter或{{1} }。
  • 使用混合方法:使用您选择的article包裹p – ol – p序列,将常用格式应用于该集合。

div而言,HTML 5规范明确建议它应该是“最后的”元素,因为它不像其他HTML元素那样具有语义含义,也可能不是在其他用户代理中用户友好。根据这个建议,如果语义对你很重要,我不会以div为代价来使用div作为正文。但是,它可以用于确保多个段落的使用不会在视觉上过于波动。

答案 1 :(得分:3)

我认为html <p>标签不是为了控制实际写作风格的习语。简单地以有序的方式显示大量文本是一种简单的方法。我不相信它是为了模拟印刷材料。你将不得不使用Div这个。

答案 2 :(得分:3)

这背后有视觉风格的原因吗?换句话说,当你有类似下面的东西时,它是否以一种你找不到理想的方式进行视觉渲染?

<p>Some paragraph text.</p>
<ul>
    <li>First list item</li>
    <li>Second list item</li>
    <li>Third list item</li>
</ul>
<p>Another paragraph.</p>

如果在P之后和UL之前问题太多,那么你可以尝试这样的相邻兄弟选择器来补偿:

p + ul { margin-top: -1em; }

答案 3 :(得分:1)

我想这取决于你认为是什么“段落”。对我来说很明显,HTML的设计者决不会将列表视为段落的一部分。虽然我认为可以对任何一种解释进行论证,但我认为该规范是正确的。

虽然列表并不代表思想的突破,但它肯定代表了语音或思维方式的变化,我相信这是一个新的语义容器。

同样,段落代表一段写作中的逻辑分区。列表表示一系列逻辑分区,虽然可以想象一个逻辑分区可以被分成更多分区,但是简单地创建一个新分区更有意义(特别是对于语音/方法中的这么大的中断)。

语义可以在很大程度上是主观的。那没关系。但是,在这种情况下,我认为HTML规范正确地表示了语义。

答案 4 :(得分:0)

你的问题的答案显然是否定的,因为规格说你不能这样做。和你一样,我喜欢保持语义,所以我通常选择你的第二个选项(段落,列表,另一个段落)。然而,在我的脑海中,我想不出任何文本列表实际上没有打破文本流,所以似乎在列表后开始一个新的段落不会受到伤害。