2009-07-17 19 views
16

¿Cómo es que cuando hago esto:Ancho de input type = elemento de texto

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

la entrada termina por 2 píxeles más ancha que la div tanto en IE6 y FF3? ¿Qué me estoy perdiendo?

EDITAR: Como mucha gente ha dicho, el límite es el problema. Si configuro border: 0px en la entrada, tendrá el mismo ancho que el div con un borde de 0 px (verificado al envolverlo dentro de un SPAN delimitado).

Sin embargo, cuando mido los elementos en la pintura, el div tiene un interior de 14 px, tal como se esperaba (10 + 2 + 2). La entrada, sin embargo, tiene un interior de 16 px, y luego un borde fuera de eso. ¿Por qué es esto? Probablemente no sea un error, ya que ocurre en IE6 y FF3, pero no lo entiendo.

Respuesta

20

Creo que así es como el navegador representa su entrada estándar. Si establece un borde en la entrada:

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

Ambos tienen el mismo ancho, al menos en FF.

+0

Gracias. Parece que en realidad es un borde de 2px, pero solo se ve como 1px. – erikkallen

4

La visible ancho de un elemento es width + padding + border + outline, por lo que parece que se está olvidando el borde en el elemento de entrada. Es decir, que el ancho del borde predeterminado para un elemento de entrada en la mayoría de los navegadores (algunos?) Se calcula realmente como 2px, no como uno. Por lo tanto, su entrada aparece como 2px más ancha. Intente configurar explícitamente el border-width en la entrada o amplíe su div.

+0

¿Quieres decir margen cuando dices contorno o esbozar un nuevo concepto del que nunca he oído hablar? – erikkallen

+0

Lea sobre el esquema aquí: http://www.quirksmode.org/css/outline.html Dice que no cuenta para el ancho de la caja, lo cual es cierto, pero cambia el ancho visible. – jason

0

ancho de la entrada es de 10 + 2 veces 1 px para la frontera

+0

El div tiene un borde, también. – erikkallen

0

Creo que se está olvidando de la frontera. Tener un borde de un píxel de ancho en la Div va a quitar dos píxeles de longitud total. Por lo tanto, parecerá que el div es dos píxeles más corto de lo que realmente es.

+1

¡No! Ancho + Borde = ancho real! Entonces, el elemento de entrada está apareciendo más grande. – jason

Cuestiones relacionadas