输入字段的大小属性未被遵守

时间:2011-07-14 20:34:23

标签: html css standards stylesheet

采取directly from W3Schools

  

定义和用法size属性指定的宽度   输入字段。

     

适用于<input type="text"><input type="password">,尺寸   attribute定义应该可见的字符数。对于   所有其他输入类型,size定义输入字段的宽度   像素。

所以..

如果这是真的,为什么我的字段<input type="text" size="2"/>足够宽以显示5个CAPTIAL MMMMM?

4 个答案:

答案 0 :(得分:35)

HTML4规范,HTML5规范,Sitepoint,Mozilla开发者网络和Microsoft的MSDN库中指定了相同的“错误”信息。所以这不仅仅是W3Schools的错。

无论如何,虽然规格说size属性应该是可见的字符数,但是大多数Web浏览器已经决定使用em单位的数量,这意味着大写字母M的宽度。

要精确指定宽度(以像素为单位)或您选择的任何单位,请使用CSS width属性。

要回答您更新的问题:它是CSS样式应用于文本框的默认字体大小的大写字母M的宽度,但文本框内文本的字体大小通常较小。

想要在框内设置一定数量的字符吗?你必须切换到固定宽度的字体。

答案 1 :(得分:9)

问题是size = x属性不是以像素为单位...而是表示<input />元素必须保持的近似大小{ {1}}字符。因此,例如,x应显示一个可容纳2个字符的输入框。

不幸的是,这在字体之间有所不同(特别是可变宽度字体),因此你可能会发现将size属性设置为2实际上会渲染一个大小为5或类似的输入框。但是,如果使用等宽字体,<input size=2 />应该呈现一个文本字段,该字段可以容纳2个字符......或至少接近。

但是,要以像素,ems等设置size=2元素的宽度,请尝试使用<input> CSS属性:

width

上面的示例将使输入宽度恰好为20像素宽,不包括边框和/或填充。

答案 2 :(得分:6)

你不能从字面上理解,因为那是不可能的。

元素的宽度基于size属性和使用的字体大小,但它不会完全符合该字符数,因为这是不可能的。

所有字符的宽度都不相同,因此字符llll很容易适合size="4"的输入,但字符mmmm不会。

此外,还添加了一些额外的空间,因此size="2"的输入不会是size="1"输入的两倍。

用作平均字符宽度的内容可能取决于浏览器。我在Firefox中测试过,我没有找到任何完全匹配的字符,但字符*很好地匹配了平均宽度。

答案 3 :(得分:1)

答案是,除非使用固定宽度的字体,否则浏览器无法准确确定两个字符的宽度。我认为你的两个角色领域可能并排适合两个“m”。

就w3schools的正确性而言,以下内容来自W3C:

  

size = cdata [CN]       此属性告诉用户代理控件的初始宽度。除了type属性之外,宽度以像素给出   值“text”或“password”。在这种情况下,它的价值指的是   (整数)字符数。

http://www.w3.org/TR/html4/interact/forms.html#edef-INPUT