文本输入框的宽度

17

为什么当我这样做时:

<input type="text" style="width: 10px; padding: 2px"/>
<div style="width: 10px; border: solid 1px black; padding: 2px">&nbsp;</div>

为什么在IE6和FF3中,输入框的宽度比div多2像素?我错过了什么吗?

编辑:正如许多人所说,边框是问题所在。如果我在输入框上设置border: 0px,则它将与具有0像素边框的div具有相同的宽度(通过将其包装在有边框的SPAN内进行验证)。

然而,当我在画图工具中测量元素时,div的内部宽度为14像素,这正如预期的一样(10+2+2)。但是,输入框内部的宽度为16像素,然后外面还有一个边框。为什么会这样?这可能不是一个bug,因为它在IE6和FF3中都发生了,但我不理解。

4个回答

20

我相信这只是浏览器呈现它们标准输入的方式。如果你在输入框上设置边框:

<input type="text" style="width: 10px; padding: 2px; border: 1px solid black"/>
<div style="width: 10px; border: solid 1px black; padding: 2px"> </div>

那么在火狐浏览器中,两者的宽度相同。


谢谢。看起来实际上是2像素的边框,只是视觉上看起来像1像素。 - erikkallen

4

元素的可见宽度是宽度+内边距+边框+轮廓线。因此,您似乎忘记了输入元素上的边框。也就是说,在大多数(一些?)浏览器中,输入元素的默认边框宽度实际上被计算为2px,而不是1px。因此,您的输入框看起来会比实际宽出2px。尝试明确设置输入框的border-width或使您的div更宽。


当你说轮廓时,你是指边距吗?还是轮廓是我从未听说过的新概念? - erikkallen
阅读有关轮廓的信息:http://www.quirksmode.org/css/outline.html 它说它不计算框的宽度,这是真的,但它确实改变了可见宽度。 - jason

0

输入框宽度为10,加上1像素的边框,共计12像素。


0

我认为你忘记了边框。在 Div 上有一个一像素宽的边框将会减去两个像素的总长度。因此,它看起来会比实际长度短两个像素。


1
不!宽度+边框=实际宽度!因此输入元素看起来更大。 - jason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接