CSS Intermedio
CSS Intermedio
CSS Intermedio
1. Box Modeling
a. Displays
b. ¿Qué compone el Modelo de Cajas?
i. Content
ii. Márgenes
iii. Paddings
iv. Bordes
v. Box-sizing
vi. Overflow
2. Normalización
3. Flexbox
a. Ejes
b. Propiedades
c. Alineaciones
4. Grid Layout
a. Propiedades
b. Alineaciones
Box Modeling
Para entender el modelo de caja, debemos comenzar por la premisa de que en
la web o mejor dicho, dentro de un navegador, todo es una caja. Al principio
este concepto puede parecer un poco raro, pero si analizamos cada elemento
de nuestra web y cómo interactúan las etiquetas HTML entre sí, entonces esta
idea toma mucho más sentido.
Esta práctica nos ayuda a entender el modelo de caja y cómo se arman los
layouts de los sitios webs a través de su anidado de etiquetas padres e hijas.
Displays
Como vimos en HTML, las etiquetas poseen un comportamiento nativo que
puede ser de dos tipos: en bloque o en línea.
Las cajas de bloque, por defecto, ocupan todo el espacio a lo ancho del
contenedor y aceptan modificaciones en su morfología a través de las
propiedades width, height, margin y padding.
Si bien estas son las opciones pueden adoptar las etiquetas por defecto,
existen otros valores posibles para la propiedad display, de los cuales nos
concentraremos por el momento en: inline-block y none.
Con este valor, tomamos lo mejor de los anteriores y obtenemos un display que
ocupa solo el tamaño de su contenido pero donde podemos modificar la
morfología del elemento a través de las propiedades width, height, margin y
padding.
Resumen de propiedades:
¿Qué compone al Modelo de Cajas?
Cada elemento HTML es una caja que posee un ancho (width) y alto (height),
cuatro lados y se compone de cuatro áreas: content, padding, border y
margin.
El margen es la última área del Box Model y se puede ver como una separación
invisible o transparente que ayuda a separar un elemento de otro. Cuando
definimos un color o imagen de fondo, este no se propaga a esta sección.
Los márgenes siempre quedan fuera del modelo de caja, por lo que pueden
utilizarse para crear espacio entre los elementos y sus propiedades aceptan
valores negativos en caso de ser necesario.
Cabe mencionar que el padding sigue siendo parte de los límites de la caja, por
ende se tendrá en cuenta para calcular el ancho y alto de la misma junto con el
contenido.
border-style: el estilo del borde, los valores posibles son los de la imagen
superior.
También existe un shorthand property para poder definir estos 3 estilos en una
misma propiedad CSS:
Box-sizing
box-sizing: content-box;
box-sizing: border-box;
En cambio, esta propiedad calcula el tamaño total de la caja SIN exceder del
ancho y alto asignado a través de las propiedades width y height, es decir
incluyendo en su tamaño total padding y bordes.
Overflow (desbordamiento)
Esta propiedad nos permite determinar cómo se verá todo el contenido que se
desborde de una caja. Normalmente, estas situaciones se dan en casos donde
nuestra caja tiene un ancho o alto explícito y el contenido interno es más
grande que estos.
Si bien estos estilos por defecto, cada vez son más “parecidos” entre los
distintos navegadores, aún existe la posibilidad de que cada uno haga su
propia interpretación y obtengamos como resultado diferentes estilos según el
navegador que esté usando el usuario.
Para poder evitar esto se recomienda normalizar los estilos CSS más comunes
como los márgenes, rellenos, viñetas de listas, decoración en los enlaces y
comportamientos en los tamaños de las cajas.
Si bien existen hojas de estilos creadas por terceros para este fin como
“Normalize.css”, nosotros aprenderemos a hacerlo manualmente y de forma
sencilla para los estilos más conflictivos.
● display - con valor flex indica que sus flex items se comportarán de
forma flexible.
order: 1;
flex-grow: 4; /* default 0 */
flex-shrink: 3; /* default 1 */
Grid CSS nace de esa necesidad, y recoge las ventajas de ese sistema,
añadiendo numerosas mejoras y características que permiten crear
rápidamente cuadrículas sencillas y potentes de forma prácticamente
instantánea.
En este sentido, con Grid Layout vamos a tener la posibilidad de crear plantillas
de filas y columnas como si de tablas se tratara. Posicionando cada uno de
nuestros items hijos en los lugares de la plantilla que necesitemos.
Con un diseño de filas y columnas como el anterior podríamos definir una grilla
para ubicar las siguientes imágenes como en una galería:
.grid {
display: grid;
grid-template-columns: 50px 300px;
grid-template-rows: 200px 75px;
}
● grid-column-start - define en qué columna comienza un item hijo.
.item-a {
grid-column-start: 2;
grid-column-end: 5;
grid-row-start: 1;
grid-row-end: 3;
}
.item-c {
grid-column: 3 / span 2;
grid-row: 3 / 4;
}
● grid-template-areas - define una grilla explícita a través de áreas
predeterminadas.
.container {
display: grid;
grid-template-columns: 50px 50px 50px 50px;
grid-template-rows: auto;
grid-template-areas:
"header header header header"
"main main . sidebar"
"footer footer footer footer";
}
.item-a {
grid-area: header;
}
.item-b {
grid-area: main;
}
.item-c {
grid-area: sidebar;
}
.item-d {
grid-area: footer;
}
.container {
justify-items: start | end | center | stretch;
}
.container {
align-items: start | end | center | stretch;
}
.center {
display: grid;
place-items: center;
}
.container {
justify-content: start | end | center | stretch | space-around | space-between |
space-evenly;
}
● align-content - igual que el anterior pero cuando necesitamos centrar
todo el contenido o distribuir las filas de forma uniforme.
.container {
align-content: start | end | center | stretch | space-around | space-between |
space-evenly;
}
● justify-self - nos permite definir la posición de un grid-item en el eje X.
.item {
justify-self: start | end | center | stretch;
}
.item {
align-self: start | end | center | stretch;
}
.item-a {
place-self: center;
}