MÍNIMO
Por defecto, los elementos de bloque ocupan toda el ancho disponible en el elemento que los contiene. De esta forma, si se reduce el tamaño de la ventana del navegador, el sitio disponible disminuye y el ancho de los elementos de bloque es menor. Si se utiliza la propiedad min-width, se puede forzar a que un elemento sólo reduzca su ancho hasta cierto límite, a partir del cual su ancho ya no disminuye.
En el siguiente ejemplo, los dos <div> ocupan todo el sitio disponible en cada momento. Si se reduce el tamaño de la ventana del navegador, los dos <div> reducen su tamaño para adaptarse al nuevo sitio disponible.
No obstante, el segundo <div> tiene establecida un ancho mínimo mediante min-width: 500px, de modo que a partir de ese valor, el <div> no reduce aunque el sitio disponible siga reduciéndose. Por lo tanto, si se reduce mucho el tamaño de la ventana del navegador, aparece una barra de scroll horizontal.
La propiedad min-width no admite valores negativos y los valores en porcentaje toman como referencia el del elemento contenedor.
El navegador IE 6 no incluye esta propiedad, por lo que se debe utilizar un truco que hace uso de CSS y JavaScript para simular el comportamiento de la propiedad min-width:
#contenedor {
min-width: 300px;
width: expression(document.body.clientWidth < 301? “300px”: “auto” );
}
El ejemplo anterior hace uso de una función llamada expression() que sólo funciona en los navegadores de tipo IE (desde su versión 5). Esta función permite establecer una medida utilizando expresiones matemáticas o mediante código JavaScript.
En este caso, se utiliza JavaScript para establecer de forma dinámica el ancho del elemento #contenedor. Si la página (obtenida mediante document.body.clientWidth) es menor que 301px, se establece su ancho a 300px. En cualquier otro caso, se deja que el navegador calcule automáticamente el ancho necesario mediante el valor auto.
El principal inconveniente de utilizar la función expression() es que el código CSS resultante no es válido según el estándar oficial y por tanto, no supera satisfatoriamente el proceso de validación de herramientas como el validador de CSS del W3C
***********************************************************************
Por otra parte, establecer medidas mediante operaciones matemáticas puede resultar muy útil para tener un control preciso cuando se utilizan unidades como em y porcentajes. Por este motivo, la futura versión CSS 3 incluirá una función llamada calc() cuyo funcionamiento es idéntico a expression().
El siguiente ejemplo muestra el uso de calc() para establecer la anchura de un elemento mediante una operación matemática compleja:
#contenedor {
float: left;
margin: 1em;
border: solid 1px;
width: calc(100%/3 – 2*1em – 2*1px);
}
El ancho del elemento #contenedor anterior se establece a una tercera parte del sitio disponible (100%/3) y después se le resta el sitio que ocupan los dos márgenes laterales de 1em de anchura cada uno (2*1em) y el espacio ocupado por los dos bordes laterales de 1px de anchura cada uno (2*1px).
MAXIMO
En ocasiones, puede ser útil no establecer de forma explícita el ancho de los elementos pero sí fijar un ancho máximo. En el siguiente ejemplo, el primer <div> no tiene establecida la propiedad max-width por lo que su ancho ocupa todo el espacio disponible en el elemento que lo contiene.
Sin embargo, el segundo <div> tiene establecida un ancho máximo mediante max-width: 400px. Si se reduce el tamaño de la ventana del navegador, los dos <div> reducen su tamaño para adaptarse al nuevo sitio disponible. Sin embargo, al aumentar el tamaño de la ventana del navegador, el primer <div> ocupa todo el sitio disponible y el segundo <div> no crece más allá de los 400px establecidos.
La propiedad max-width no admite valores negativos, los valores en porcentaje toman como referencia el del elemento contenedor y el valor none se puede utilizar para no limitar el ancho máximo de un elemento.
Uno de los usos típicos de max-width es el de limitar el ancho máximo de las páginas web. Con el uso de pantallas y resoluciones cada vez mayores, se complica la creación de páginas web cuya ancho se adapta dinámicamente. El siguiente ejemplo establece el ancho de la página al 95% del tamaño de la ventana del navegador:
#contenedor {
width: 95%;
}
Si se visualiza la página anterior en una pantalla con una resolución muy grande, seguramente su aspecto será demasiado diferente al diseño original de la página. En estos casos, se suele mantener el ancho adaptable a la
ventana del navegador, pero se limita su ancho máximo:
#contenedor {
width: 95%;
max-width: 1200px;
}
El navegador Internet Explorer 6 no incluye esta propiedad, por lo que se debe utilizar un truco que hace uso de CSS y JavaScript para simular el comportamiento de la propiedad max-width:
#contenedor {
max-width: 1200px;
width: expression(document.body.clientWidth > 1201? “1200px”: “auto”);
}
El ejemplo anterior hace uso de una función llamada expression() que sólo funciona en los navegadores de tipo Internet Explorer (desde su versión 5). Esta función permite establecer una medida utilizando expresiones matemáticas o mediante código JavaScript.
En este caso, se utiliza JavaScript para establecer de forma dinámica el ancho del elemento #contenedor. Si el ancho de la página (obtenida mediante document.body.clientWidth) es mayor que 1201px, se establece su ancho a 1200px. En cualquier otro caso, se deja que el navegador calcule automáticamente el ancho necesario mediante el valor auto.
El principal inconveniente de utilizar la función expression() es que el código CSS resultante no es válido según el estándar oficial y por tanto, no supera satisfatoriamente el proceso de validación de herramientas como el validador de CSS del W3C
Por otra parte, establecer medidas mediante operaciones matemáticas puede resultar muy útil para tener un control preciso cuando se utilizan unidades como em y porcentajes. Por este motivo, la futura versión CSS 3 incluirá una función llamada calc() cuyo funcionamiento es idéntico a expression().
El siguiente ejemplo muestra el uso de calc() para establecer la anchura de un elemento mediante una operación matemática compleja:
#contenedor {
float: left;
margin: 1em; border: solid 1px;
width: calc(100%/3 – 2*1em – 2*1px);
}
El ancho del elemento #contenedor anterior se establece a una tercera parte del sitio disponible (100%/3) y después se le resta el sitio que ocupan los dos márgenes laterales de 1em de ancho cada uno (2*1em) y el espacio ocupado por los dos bordes laterales de 1px de ancho cada uno (2*1px).
AMBOS
El código:
<style type=”text/css”>
#minimo{
border:#000 solid 1px;
background:#cff;
min-width:600px;
max-width:1000px;
height:200px;
}
</style>
El código para IE 6-:
Desafortunadamente, nuestro buen amigo Internet Explorer 6 y menor, desconocía las propiedades min-width y max-width, por lo que tendremos que agregar un truco especial para que simule las mismas propiedades, quedando de la siguiente forma:
#minimo{
width:expression(
(document.documentElement.clientWidth < 600)? “600px” :
(document.documentElement.clientWidth > 1000)? “1000px” :
“auto” );}