¿Por qué display:block;width:auto;
en mi entrada de texto no se comporta como un div y llena el ancho del contenedor?Entrada con pantalla: el bloque no es un bloque, ¿por qué no?
Tenía la impresión de que un div es simplemente un elemento de bloque con ancho automático. En el siguiente código, ¿no deberían el div y la entrada tener dimensiones idénticas?
¿Cómo obtengo la entrada para completar el ancho? El ancho del 100% no funcionará, porque la entrada tiene relleno y un borde (lo que provoca un ancho final de 1 píxel + 5 píxeles + 100% + 5 píxeles + 1 píxeles). Los anchos fijos no son una opción, y estoy buscando algo más flexible.
Preferiría una respuesta directa a una solución alternativa. Esto parece una peculiaridad de CSS y su comprensión puede ser útil más adelante.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>width:auto</title>
<style>
div, input {
border: 1px solid red;
height: 5px;
padding: 5px;
}
input, form {
display: block;
width: auto;
}
</style>
</head>
<body>
<div></div>
<form>
<input type="text" name="foo" />
</form>
</body>
</html>
Debo señalar que ya puedo hacer esto con las soluciones de la envoltura. Además de este atornillar con la semántica de la página y las relaciones del selector de CSS, estoy tratando de comprender la naturaleza del problema y si se puede superar cambiando la naturaleza de la ENTRADA.
Ok, esto es VERDADERO extraño! Descubrí que la solución es simplemente agregar max-width:100%
a una entrada con width:100%;padding:5px;
. Sin embargo, esto genera aún más preguntas (que formularé en otra pregunta), pero parece que el ancho utiliza el modelo de caja de CSS normal y el ancho máximo usa el modelo de caja de bordes de Explorer de Internet . Qué extraño.
Ok, esto último parece ser un bug en Firefox 3. Internet Explorador 8 y Safari 4 límite del ancho máximo de 100% + + acolchado de frontera que es lo que la especificación dice que hacer. Finalmente, Internet Explorer obtuvo algo bueno.
¡Dios mío, esto es increíble! En el proceso de jugar con esto, y con la ayuda de los venerables gurús Dean Edwards y Erik Arvidsson, logré juntar tres soluciones separadas para hacer un verdadero ancho de navegador cruzado de 100% en elementos con relleno y bordes arbitrarios. Ver la respuesta a continuación. Esta solución no requiere ningún marcado HTML adicional, solo una clase (o selector) y un comportamiento opcional para el explorador heredado de Internet .
duplicado exacto de [http://stackoverflow.com/questions/628500/can-i-stop-100-width-text-boxes-from-extending-beyond-their-containers ] (http://stackoverflow.com/questions/628500/can-i-stop-100-width-text-boxes-from-extinging-beyond-their-containers) –
@SleepyCod que no es un duplicado exacto. Esta pregunta aborda el problema de los elementos de 'entrada' que aparentemente no cumplen con la especificación CSS 2.1, mientras que la pregunta a la que se vincula pregunta cómo evitar el desbordamiento de cajas que ocurre perfectamente dentro de los límites de la especificación CSS 2.1. Tanto las preguntas como sus soluciones se superponen, pero llamarlas duplicados exactos es simplemente ** incorrecto. ** – amn