似乎(strict)html不允许嵌套< p>内的任何非内联元素,但是我应该如何渲染一个包含列表的段落(通常在自然文本中出现的东西).我看到三个答案都显得不满意:
>列表不应在段落内发生. (我不会进行文化辩论,但我希望html不会成为写作风格的地方.)
>将文本分成一个段落,然后一个列表,然后一个第二个段落与后面的文本.这看起来很糟糕,因为现在我有< p>块是段落的一部分,对于尝试以更语义的方向移动的标记似乎不好.
>使用一些< div class =“mypara”>的假段落 – 它看起来像一个坏的方式来绕过整个事情,放弃使用正确的文本语法的标记.
有没有其他方法来做这个语义正确和有效?
解决方法
HTML 5中的最新工作草案中的段落被定义为只能包含短语内容的流程元素.列表也定义为流元素,不能在段落中括起来.无论您认为段落的定义如何,这是HTML中该术语的正式定义,我认为这不可能改变.
除了你提到的两个之外,你可能会考虑两种可能性:
>考虑到适用范围更广泛的流动元素(如段落,导航,页眉,页脚或文章).
>使用混合方法:将p-ol-p序列与您选择的适用于该集合的通用格式的div进行包装.
就div而言,HTML 5规范清楚地表明,它应该是一个“最后的手段”元素,因为它不以其他HTML元素的方式具有语义意义,并且可能不如用户友好的替代用户代理商.通过这个建议,如果语义对你很重要,我不会以p为代价来使用div来代替正文.但是,确保使用多个段落不会太视觉上波动,这可能是有用的.