我正在网站(即CMS)上发布python代码。我有一个python脚本,可以读取任何python脚本,并从中生成语法彩色的HTML。然后,我将该HTML复制/粘贴到CMS编辑窗口中。

问题是我的python语法突出显示脚本使用<pre>标记来保留制表符/空格,这在python中非常重要。但是,由于某些不清楚的原因,CMS删除了<pre>标签。管理员告诉我,我应该使用<div>而不是<pre>。您能帮我设计一个<div>样式以保持白空间格式吗?

评论

John的回答对于所提出的特定问题很好,尽管这确实会使您内容的语义有所降低。关于CMS剥离pre标签,某些应用程序具有一个设置,该设置指定内容中允许使用的HTML。如果您发布了许多预格式化的文本,可能值得要求管理员考虑调整它是否适用于您的应用程序,而不是告诉您(坦率地)使用任意变通办法。

#1 楼

您可以使用CSS white-space规则来做到这一点:

div
{
  font-family: "Courier New", monospace;
  white-space: pre;
}


该规则中包含的字体使每个字符具有相同的宽度,这与<pre>标记中的文本的通用格式相同。

请记住,这会使所有<div>标签都具有这种行为。理想情况下,您将为这些<div>标记分配一个类,以仅影响要模拟<pre>的那些标记。就像这样:

div.code
{
  font-family: "Courier New", monospace;
  white-space: pre;
}


或者,更好的是,如果CMS没有剥离<code>标记,请使用它。它的作用类似于<pre>标记,但在语义上对于显示代码是正确的。

评论


+1表示和语义。请注意,默认情况下会包装空格,因此您也必须为其分配white-space:nowrap。
也是一个块元素,其中是内联的;因此,要模仿
,应指定display:block。


–贾里·凯纳嫩(JariKeinänen)
2011年7月9日在13:49



省略“ Courier New”,默认字体与您的浏览器的pre更紧密匹配。

–access_granted
17年4月19日在17:45

#2 楼

若要将DIV格式化为PRE,则white-space: pre;需要DIV。此外,您应该使用第一个答案中所述的等宽字体。

解决方案white-space: nowrap;不正确,因为它不显示选项卡,并且仍然会折叠多个空格(@John Conde)。 >


nowrap
指定nowrap可确保
空格序列会折叠成单个空格字符,但
换行符会被抑制。

pre
指定pre可确保空白序列
不折叠。行
仅在标记中的新行处断开(或在
生成的内容中出现“ \ a”)。

来自:http:// reference.sitepoint.com/css/white-space

评论


您对空格的值应该是pre而不是nowrap表示正确。我已经纠正了我的答案。

–John Conde♦
2011年7月9日15:46