我正在使用CKEditor 4,它似乎有一个默认设置<p></p>用于表示空行.到目前为止,我总是看到HTML中的空行<p> </p>- 即.不是空标签.
所以CKEditor的默认输出代表一个空行,例如:
<p>paragraph before blank line</p>
<p></p>
<p>paragraph after blank line</p>
Run Code Online (Sandbox Code Playgroud)
问题是,对于更改,IE7,8,9似乎将此"正确"呈现为空行,而Firefox和Chrome则不会 - 它们似乎在布局方面忽略空<p>和<div>标记.
因此,目前,我必须告诉CKEditor包含 空行(由于某种原因不是默认设置),并且在后端,替换<p>可能会漏掉的任何空标记.
我的问题是,在HTML中表示空行的黄金标准是什么?好老<p> </p>,还是其他什么?
另外,鉴于CKEditor的默认设置是空<p>行的空标记,Chrome和Firefox是否会忽略它们?或IE是错误的将它们渲染为空行,而CKEditor的默认值应该真正使用<p> </p>?
Juk*_*ela 28
根据元素上的HTML 4.01p,<p></p>有效但不应该使用,浏览器应该忽略它.浏览器行为不一致,通常不遵守规范.<hr><hr><p></p><hr>例如,你在Chrome上测试它,它表明尽管p元素的高度为零,但它有顶部和底部边距,因此它会影响渲染,即不会被忽略.- HTML5 CR似乎对此问题保持沉默,即它没有说明p具有空内容的元素的任何具体内容.更新: HTML5有一个关于带有短语内容作为内容模式的元素的一般声明(例如p):这样的元素应该包含"应该至少有一个不是元素间空格的后代Text节点,或者至少有一个后代元素嵌入内容的节点".这意味着<p></p>不应该使用; 但这是一个建议,而不是一致性要求("应该",而不是"应该").
<p> </p>规范未定义的效果(没有定义不间断空格字符的渲染),但浏览器通常将不间断空格视为另一个图形字符,恰好用空字形呈现.所以在实践中它会生成一个线框,其高度由计算值决定line-height.
默认情况下,p元素之间存在边距,对应于一个空行.因此,对于p元素之间的空白行的任何需求似乎都是由于覆盖默认样式而引起的,例如p { margin: 0 }在CSS中.为了覆盖它,p应该使用额外的CSS而不是人工元素.也就是说,一些p元素应该具有合适的非零底部或顶部边缘.
HTML 4.01将"空白字符"定义为指Ascii空间,Ascii选项卡,Ascii表单提要和零宽度空间(例如,不是不间断空格),定义它们的渲染,并添加:"此规范不表示除了在此明确标识为空白字符的空格字符的行为,渲染或其他方式.出于这个原因,作者应该使用适当的元素和样式来实现涉及空白区域的视觉格式化效果,而不是空格字符."