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 px?我错过了什么?

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

但是,当我测量绘图中的元素时,div 的内部为 14 px,正如预期的那样 (10+2+2)。然而,输入有一个 16 px 的内部,然后在其外部有一个边框。为什么是这样?可能不是错误,因为它发生在 IE6 和 FF3 中,但我不明白。

4

4 回答 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>

然后两者的宽度相同,至少在FF中。

于 2009-07-17T19:40:20.450 回答
4

元素的可见宽度为width + padding + border + outline,因此您似乎忘记了输入元素上的边框。也就是说,大多数(某些?)浏览器上输入元素的默认边框宽度实际上计算为 2px,而不是 1。因此,您的输入显示为 2px 宽。尝试明确设置border-width输入,或使您的 div 更宽。

于 2009-07-17T15:00:18.660 回答
0

边框的输入宽度为 10 + 2 倍 1 px

于 2009-07-17T15:01:08.033 回答
0

我想你忘记了边界。在 Div 上设置一个像素宽的边框将占用两个像素的总长度。因此它看起来好像 div 比实际短两个像素。

于 2009-07-17T15:02:54.350 回答