今天我和Tumblr玩了一下。 我尝试将预先格式化的文本添加到描述段落块中,如下所示:
{block:Description}
<p id="description">{Description}</p>
{/block:Description}
但是,<pre>
元素会在<p>
元素后面呈现,而不是在我的意图内。
我在这里做错了什么或者它是一个错误?
答案 0 :(得分:17)
您无法在HTML中的<pre>
内嵌套块级元素,例如<p>
。所以Tumblr的行为正确。
在插入预格式化文本之前,您应该关闭段落。
如果您需要电传打字样式的文字,请尝试使用<tt>
标签,但请注意它是非标准元素,并且可能无法在所有浏览器中呈现。实现格式化的正确方法是使用CSS。
答案 1 :(得分:1)
另外,我刚刚意识到我在<pre>
和<code>
标签中将代码粘贴到tumblr中的类似问题是因为您将代码包装在这些标记中并不会阻止您用<
和>
而不是胡萝卜来逃避胡萝卜。
答案 2 :(得分:0)
HTML5术语是:
p
的“内容模型”是“短语内容”:“ https://html.spec.whatwg.org/multipage/grouping-content.html#the-p-element pre
的“类别”是:“流内容”和“可显示的内容”:https://html.spec.whatwg.org/multipage/grouping-content.html#the-pre-element 由于pre
的类别不包含“短语内容”,因此无法将pre
放在p
内。
尽管可以使用How to change a span to look like a pre with CSS?的CSS样式来模拟pre
,但是我不确定p
中是否允许使用该样式。
另请参阅:List of HTML5 elements that can be nested inside P element?