0

我能找到的每个资源都说 textarea 的 cols 属性表示水平行中平均字符宽度的数量。然而,在 Chrome、Firefox 和 Safari(都在 OSX 上)中,将 textarea 的 cols 设置为(例如)80,使用等宽字体,将允许您在换行之前键入 81 个字符。这不是一个四舍五入的问题。cols=1 添加相同的数量。这也不是填充或边距问题;剥离所有样式的行为都是相同的。它只是列,而不是行。

这是指定的行为吗?如果是这样,为什么不在规范或数百个在线指南/资源中?如果这是一个非官方的约定,它是否足够可靠,我总是可以为 80 列设置 cols=79,而不是设置 css 宽度?

4

2 回答 2

2

的指定含义cols是“指定平均字符宽度中的可见宽度”,Windows平台的浏览器遵循这个。当然,如果字体不是等宽字体,“平均字符宽度”就成为一个模糊的概念,浏览器在宽度分配上可能会有所不同。

包装是一个不同的问题。HTML 4.01 规范仍然反映了在 textarea 中没有自动换行的旧想法,但浏览器通常拒绝这一点。默认情况下,它们会自动换行比该cols值更长的行,这在 Windows 浏览器上是准确的。

可以使用wrap非标准属性控制自动换行,但wrap=off它确实是使浏览器按照 HTML 4.01“标准”运行的唯一方法!

在 HTML5 草案中,wrap属性被定义,但只有值softhard所以它没有描述任何实现旧行为的方法。

作为一项规则,你不应该太担心这一点。cols根据您期望对用户最有用的内容设置属性。80 的值通常太大了。55 或 60 对应于正常的最佳线长度。并且为了方便书写,除非数据是计算机代码或预先格式化的文本,否则字体应设置为某种比例字体,这样您就不会得到每行字符的确切最大数量。

于 2012-09-24T06:07:56.590 回答
1

有两件事要为此负责。

  1. 滚动条

    根据 W3C 的说法,滚动条有额外的空间。请参阅W3C的注释。

    cols = 数字 [CN]

    此属性以平均字符宽度指定可见宽度。用户应该能够输入比这更长的行,因此当内容超出可见区域时,用户代理应该提供一些方法来滚动控件的内容。用户代理可以包装可见的文本行以保持长行可见,而无需滚动。

  2. 字体大小

    cols100%仅当您的字体大小为浏览器默认字体大小时,该属性才有效。如果你改变,它不会工作。任何隐式/显式font-sizecss 规则都会改变行为。

于 2012-09-24T05:31:32.560 回答