我遇到以下HTML问题:
<html>
<body>
<p style="font-size: large">
Some paragraph text
<span><pre style="display:inline">some span text</pre></span>
additional paragraph text that continues ...
</p>
</body>
</html>
所以这只是一个段落,其中包含一些预先格式化的文本。我遇到的问题是Opera和Chrome都没有像我期望的那样显示。具体来说,他们在跨度之前关闭段落标记并强制换行。 WTH?!
使用chromes HTML检查选项,它会显示正在关闭<p>
代码并插入空<span></span>
而不是封闭<pre>
。如果删除了范围,则Chrome仍会关闭<p>
标记,从而强制换行。
我需要显示以下标记结构,而不强制使用任何换行符<p><span><pre><code></code></pre></span></p>
。这是完全可能还是有其他选择或解决方法?
编辑:
我被锁定为<pre>
标签,因为它是wordpress的语法高亮插件的一部分。
注意: 我认为这里最好的建议是验证您的HTML。我遇到的很多问题是因为某些浏览器正在优雅地处理无效的HTML而其他浏览器并不优雅。验证意味着您可以使用干净的石板。
答案 0 :(得分:11)
完全删除pre
标记,然后只提供span
style="white-space:pre"
。有关其他white-space
选项的说明,请参阅this page。
<pre>
基本上是在说<div style="white-space:pre">
;你想要的是<span style="white-space:pre">
。
答案 1 :(得分:5)
段落标记不能包含块级元素:
http://www.w3.org/TR/html401/struct/text.html#h-9.3.1
pre
是块级元素。
如果您希望在内联元素中使用white-space: pre
行为,则可以在跨度上设置CSS样式pre
。
答案 2 :(得分:1)
pre
是一个块级元素,如果内存正确,则不允许在span
内。
您可以通过验证HTML来找到答案。