我正在使用CKEditor 4,它似乎有一个默认设置,使用<p></p>
来表示一个空行。到目前为止,我总是在<p> </p>
代表的HTML中看到空行 - 即。不是空标签。
因此CKEditor表示空行的默认输出是,例如:
<p>paragraph before blank line</p>
<p></p>
<p>paragraph after blank line</p>
问题是,对于更改,IE7,8,9似乎将此“正确”呈现为空行,而Firefox和Chrome则不会 - 它们似乎忽略空<p>
和{{1}标签,就布局而言。
所以,目前,我必须告诉CKEditor在空行中包含<div>
(由于某种原因不是默认设置),并在后端替换任何出现的空
可能会漏掉的标签。
我的问题是,在HTML中表示空行的黄金标准是什么?好老的<p>
或其他东西?
另外,鉴于CKEditor的默认设置为空行<p> </p>
标记,Chrome和Firefox是否会忽略它们?或IE是错误的将它们渲染为空行,而CKEditor的默认值应该是使用<p>
?
答案 0 :(得分:27)
根据HTML 4.01 on the p
element,<p></p>
有效,但不应使用,浏览器应忽略它。浏览器行为不一致,通常不遵守规范。您可以使用<hr><hr><p></p><hr>
对此进行测试 - 在Chrome上,它显示虽然p
元素的高度为零,但它具有上边距和下边距,因此它会影响渲染,即不会被忽略。 - HTML5 CR似乎对此问题保持沉默,即它没有说明具有空内容的p
元素的任何具体内容。 更新: HTML5有一个general statement关于带有短语内容作为内容模式的元素(例如p
):这样的元素应该包含“应该至少有一个后代文本不是元素间空格的节点,或者是嵌入内容的至少一个后代元素节点“。这意味着不应使用<p></p>
;但这是一个建议,而不是一致性要求(“应该”,而不是“应该”)。
规范未定义<p> </p>
的效果(尚未定义不间断空格字符的渲染),但浏览器通常将不间断空格视为另一个图形字符,恰好碰巧用空字形渲染。因此在实践中它会生成一个线框,其高度由计算值line-height
确定。
默认情况下,p
元素之间有一个边距,对应一个空行。因此,p
元素之间的任何空白行的需要似乎都是由于覆盖了默认样式,而不是CSS中的p { margin: 0 }
。为了覆盖它,应该使用额外的CSS而不是人工p
元素。也就是说,一些p
元素应该具有合适的非零底部或上边距。
HTML 4.01将“white space characters”定义为引用Ascii空间,Ascii选项卡,Ascii表单提要和零宽度空间(因此,不到无中断空间),定义它们的渲染,并添加:“此规范不指示空格字符的行为,渲染或其他方式,而不是那些在此处明确标识为空白字符的空格字符。出于这个原因,作者应该使用适当的元素和样式来实现涉及空白区域的视觉格式化效果,而不是空格字符。“
答案 1 :(得分:2)
我会说IE有一个错误,空段对我没用。
来自w3.org:
我们不鼓励作者使用空P元素。用户代理应该忽略空P元素。
我建议当用户创建空白行时,将其文本换成段落。
所以而不是:
before line break<p> </p>after line break
你应该生成
<p>before line break</p><p>after line break</p>
有道理吗?
答案 2 :(得分:1)
使用符合标准的HTML&amp;编码网站文本内容关键因素的CSS将被放置在正常的段落标记中。这写为<p>
。要在编写段落文本时制作SEO友好段落文本,需要查看上一个子标题,然后创建解释和扩展此标题文本的网页内容。是的,您必须在HTML编辑器中使用空段落标记。
答案 3 :(得分:0)
我认为SEO对于导航器呈现空<p>
并不好。我将其替换为js或php,然后将其保存在ddbb上:)