¿Cuantas veces estás aprendiendo css y al maquetar una columna te salta al siguiente nivel?
Empiezas a jugar con los porcentajes y… no hay manera. Demasiado ancho. Demasiado estrecho.
Evidentemente el css ha evolucionado hacia sistemas de rejillas dónde esto se soluciona pero primero hay que empezar la casa por los cimientos y entender el importante concepto del ancho real de una caja en css.
La respuesta la encontramos en el modelo de cajas de css.
Te será de utilidad repasar estos conceptos.
- Propiedades width, height, padding, border y margin.
- Propiedad box-sizing.
- Dimensiones reales de una caja.
Pasemos a hacer un pequeño ejercicio.
Enunciado
Se indican a continuación los estilos que aplican a dos cajas diferenciadas.
Detalla cuál es el ancho y la altura real de cada una de las cajas.
/*ejercicio 1 */
.caja-1{
width:100px;
height:30px;
padding:20px 30px 10px;
border:1px solid #000;
margin:20px 10px;
}
.caja-2{
box-sizing:border-box;
width:100px;
height:30px;
padding:20px 30px 10px;
border:1px solid #000;
margin:20px 10px;
}
Solución del ejercicio
Las 2 cajas se ven afectadas por las mismas instrucciones width, height, padding, border y margin.
No obstante la segunda caja se ve influenciada por la propiedad box-sizing.
La propiedad box-sizing adapta el width disponible para contenido para que la suma de border + width disponible final + padding sea igual al width especificado en el css.
Tanto es así que en la segunda caja el width final se mantiene a 100px sin embargo se mantiene el padding. Al ser este suficientemente grande el texto no cabe en una línea y el navegador se ve forzado a romperlo en 2 líneas que sobresalen de la caja.
[vc_custom_heading text=»Ejercicio 1″ font_container=»tag:h3|text_align:left» use_theme_fonts=»yes»]border-left (1px) + padding-left (30px) + width (100px) + padding-right (30px)+ border-right (1px) = 162px de ancho real a los que incluir el margin-left y el margin-right si lo que queremos medir es el espacio ocupado.
border-top (1px) + padding-top (20px) + height (30px) + padding-bottom (10px) + border-bottom (1px) = 62px de altura real a los que incluir el margin-top y el margin-bottom si lo que queremos medir es el espacio ocupado.[vc_custom_heading text=»Ejercicio 2″ font_container=»tag:h3|text_align:left» use_theme_fonts=»yes»]Todo se recalcula para que el width final real sea 100px y el height 30px
El width disponible es igual a width (100px) – border-left (1px) – padding-left(30px) – padding-right(30px) – border-right(1px) = 38px
El height disponible es igual a height (30px) – border-top (1px) – padding-top(20px) – padding-bottom(10px) – border-top(1px) = -2px
No puede haber un valor negativo. El texto si no se dice lo contrario necesita 18px de espacio. Todo ello hace que el navegador ponga como puede el contenido y por ello se genera el efecto de que salta fuera de la caja dibujada. No cabe.¡Hola!
Querido lector,
Este es un interesante ejercicio para entender de una vez por todas box-sizing.
¡Espero que te haya sido de utilidad!
¡Si te ha gustado este contenido te animo a seguirme en mi perfil de empresa de Linkedin!
Deja una respuesta