<pre> doesn&#39;t work in Chrome</pre>的“宽度”属性

时间:2013-05-30 15:51:46

标签: html

我使用pre的“width”属性来控制每行的最大字数。在Firefox中它执行正常,但在Chrome中“宽度”属性不起作用。我不知道为什么。

例如:width = 70

2 个答案:

答案 0 :(得分:2)

width的{​​{1}}属性最初在HTML 2.0中定义如下:“WIDTH属性指定一行的最大字符数,并允许HTML用户代理选择合适的字体和缩进。“所以它并不意味着改变pre的基本含义(保留空格和换行符,没有添加包装)。这保留在较新的规范中,但未在浏览器中实现。

Firefox会将pre视为指示文本换行后的字符限制。其他浏览器会忽略它。

要指定换行,请在CSS中设置width并设置width(在合理的新浏览器中广泛支持)。但问问自己:如果你不想要white-space: pre-wrap的基本效果(按原样保留格式),你应该使用其他元素吗?

您无法在CSS中设置pre字符,但使用ch unit可以很好地支持浏览器,如果字体是等宽字体(这是width的默认设置)。对于旧版浏览器,您可以使用pre单元,对要使用的字体中的字符宽度进行粗略猜测。例如:

em

如果您希望根据pre { white-space: pre-wrap; width: 40em; width: 70ch; } 的原始想法减少字体大小,请在<pre width=...>元素上设置font-size

答案 1 :(得分:1)

来自HTML 4.01 specification

  

width = number [CN]
  已过时。此属性向可视用户代理提供有关格式化块的所需宽度的提示。用户代理可以使用此信息来选择适当的字体大小或适当缩进内容。所需宽度以字符数表示。 目前尚未广泛支持此属性

HTML 5将该属性标记为obsolete并说:

  

以下属性已过时(尽管元素仍然是语言的一部分),作者不得使用
  ...
  前元素的宽度

如果要控制宽度,请在CSS中执行此操作。不幸的是,您不能在字符中指定它。