jueves, 26 de septiembre de 2013

CSS - Ancho (width) distintos entre selects e inputs

Un problema común cuando uno maqueta sistemas es el tema de un problema cuando se setea en fijo el ancho de los select y los inputs en HTML.

Generalmente, uno espera que, poniendo style="width: 300px;" tanto a un select como a un input queden exactamente del mismo ancho. Misteriosamente, eso no sucede, debido a que el select toma como parte de ese ancho al padding y los bordes, mientras que el input, no lo hace.

Una solución que encontré bastante eficiente es setear, mediante CSS, lo siguiente:

select, input
{
    box-sizing:content-box;
    -ms-box-sizing:content-box;
    -moz-box-sizing:content-box;
    -webkit-box-sizing:content-box; 
}

Con ese pequeño fix, se soluciona el problema, por lo menos en Firefox, Chrome e IE, que es donde lo he probado. Tengo entendido que esta caracteristica "box-sizing" de CSS es compatible en todas las versiones de IE, pero no pongo las manos en el fuego.

Más información sobre box-sizing en el siguiente link:
http://emiliocobos.net/la-propiedad-box-sizing/