En este tema, exploraremos las propiedades específicas que se pueden aplicar a los ítems flexibles dentro de un contenedor Flexbox. Estas propiedades permiten controlar cómo se distribuyen y alinean los ítems dentro del contenedor. Las propiedades principales que cubriremos son:
- order
- flex-grow
- flex-shrink
- flex-basis
- flex
- align-self
- Propiedad
order
order
La propiedad order
define el orden en el que se muestran los ítems flexibles dentro del contenedor. Por defecto, todos los ítems tienen un valor de order
de 0, pero puedes asignarles valores positivos o negativos para cambiar su posición.
Ejemplo:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Propiedad order</title> <style> .container { display: flex; } .item1 { order: 2; } .item2 { order: 1; } .item3 { order: 3; } </style> </head> <body> <div class="container"> <div class="item1">Item 1</div> <div class="item2">Item 2</div> <div class="item3">Item 3</div> </div> </body> </html>
En este ejemplo, aunque el item1
aparece primero en el HTML, se mostrará en segundo lugar debido a la propiedad order
.
- Propiedad
flex-grow
flex-grow
La propiedad flex-grow
especifica cuánto crecerá un ítem en relación con los otros ítems flexibles dentro del mismo contenedor. El valor por defecto es 0, lo que significa que el ítem no crecerá más allá de su tamaño inicial.
Ejemplo:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Propiedad flex-grow</title> <style> .container { display: flex; } .item1 { flex-grow: 1; } .item2 { flex-grow: 2; } .item3 { flex-grow: 1; } </style> </head> <body> <div class="container"> <div class="item1">Item 1</div> <div class="item2">Item 2</div> <div class="item3">Item 3</div> </div> </body> </html>
En este ejemplo, el item2
crecerá el doble que item1
y item3
.
- Propiedad
flex-shrink
flex-shrink
La propiedad flex-shrink
determina cuánto puede reducirse un ítem en relación con los otros ítems flexibles dentro del mismo contenedor. El valor por defecto es 1, lo que significa que el ítem puede reducirse si es necesario.
Ejemplo:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Propiedad flex-shrink</title> <style> .container { display: flex; } .item1 { flex-shrink: 1; } .item2 { flex-shrink: 2; } .item3 { flex-shrink: 1; } </style> </head> <body> <div class="container"> <div class="item1">Item 1</div> <div class="item2">Item 2</div> <div class="item3">Item 3</div> </div> </body> </html>
En este ejemplo, el item2
se reducirá el doble que item1
y item3
si el espacio es limitado.
- Propiedad
flex-basis
flex-basis
La propiedad flex-basis
define el tamaño inicial de un ítem antes de que se distribuya el espacio restante. Puede ser un valor absoluto (por ejemplo, 200px
) o relativo (por ejemplo, 20%
).
Ejemplo:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Propiedad flex-basis</title> <style> .container { display: flex; } .item1 { flex-basis: 100px; } .item2 { flex-basis: 200px; } .item3 { flex-basis: 100px; } </style> </head> <body> <div class="container"> <div class="item1">Item 1</div> <div class="item2">Item 2</div> <div class="item3">Item 3</div> </div> </body> </html>
En este ejemplo, item2
tendrá un tamaño inicial de 200px, mientras que item1
y item3
tendrán un tamaño inicial de 100px.
- Propiedad
flex
flex
La propiedad flex
es una propiedad abreviada que combina flex-grow
, flex-shrink
y flex-basis
. Es una forma conveniente de establecer las tres propiedades a la vez.
Ejemplo:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Propiedad flex</title> <style> .container { display: flex; } .item1 { flex: 1 1 100px; /* flex-grow: 1, flex-shrink: 1, flex-basis: 100px */ } .item2 { flex: 2 1 200px; /* flex-grow: 2, flex-shrink: 1, flex-basis: 200px */ } .item3 { flex: 1 1 100px; /* flex-grow: 1, flex-shrink: 1, flex-basis: 100px */ } </style> </head> <body> <div class="container"> <div class="item1">Item 1</div> <div class="item2">Item 2</div> <div class="item3">Item 3</div> </div> </body> </html>
En este ejemplo, item2
crecerá el doble que item1
y item3
, y tendrá un tamaño inicial de 200px.
- Propiedad
align-self
align-self
La propiedad align-self
permite sobrescribir la alineación de un ítem específico dentro del contenedor flexible. Los valores posibles son auto
, flex-start
, flex-end
, center
, baseline
y stretch
.
Ejemplo:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Propiedad align-self</title> <style> .container { display: flex; height: 200px; align-items: center; /* Alinea todos los ítems en el centro */ } .item1 { align-self: flex-start; /* Sobrescribe la alineación para este ítem */ } .item2 { align-self: flex-end; /* Sobrescribe la alineación para este ítem */ } .item3 { align-self: center; /* Sobrescribe la alineación para este ítem */ } </style> </head> <body> <div class="container"> <div class="item1">Item 1</div> <div class="item2">Item 2</div> <div class="item3">Item 3</div> </div> </body> </html>
En este ejemplo, item1
se alineará al inicio del contenedor, item2
al final y item3
en el centro, independientemente de la alineación general del contenedor.
Ejercicio Práctico
Ejercicio:
Crea un contenedor flexible con tres ítems. Configura las propiedades flex-grow
, flex-shrink
y flex-basis
para que el primer ítem ocupe el 50% del espacio disponible, el segundo ítem ocupe el 30% y el tercer ítem ocupe el 20%. Asegúrate de que los ítems se reduzcan proporcionalmente si el contenedor se hace más pequeño.
Solución:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Ejercicio Flexbox</title> <style> .container { display: flex; } .item1 { flex: 5 1 50%; /* flex-grow: 5, flex-shrink: 1, flex-basis: 50% */ } .item2 { flex: 3 1 30%; /* flex-grow: 3, flex-shrink: 1, flex-basis: 30% */ } .item3 { flex: 2 1 20%; /* flex-grow: 2, flex-shrink: 1, flex-basis: 20% */ } </style> </head> <body> <div class="container"> <div class="item1">Item 1</div> <div class="item2">Item 2</div> <div class="item3">Item 3</div> </div> </body> </html>
En esta solución, item1
crecerá para ocupar el 50% del espacio disponible, item2
el 30% y item3
el 20%. Si el contenedor se hace más pequeño, los ítems se reducirán proporcionalmente.
Conclusión
En esta lección, hemos aprendido sobre las propiedades específicas de los ítems flexibles en Flexbox. Estas propiedades nos permiten controlar el orden, el crecimiento, la reducción, el tamaño inicial y la alineación de los ítems dentro de un contenedor flexible. Con estos conocimientos, puedes crear diseños más complejos y adaptables utilizando Flexbox. En la próxima lección, exploraremos cómo crear diseños completos utilizando Flexbox.
Maestría en CSS: De Principiante a Avanzado
Módulo 1: Introducción a CSS
- ¿Qué es CSS?
- Sintaxis y Selectores de CSS
- Cómo Añadir CSS a HTML
- Propiedades Básicas de CSS
- Colores en CSS
- Unidades y Medidas en CSS
Módulo 2: Estilización de Texto y Fuentes
- Propiedades de Texto
- Propiedades de Fuentes
- Integración de Google Fonts
- Alineación y Espaciado de Texto
- Decoración y Transformación de Texto
Módulo 3: Modelo de Caja y Diseño
- Entendiendo el Modelo de Caja
- Margen y Relleno
- Borde y Contorno
- Ancho y Alto
- Tamaño de Caja
- Propiedad Display de CSS
Módulo 4: Posicionamiento y Flotación
- Propiedad Position de CSS
- Posicionamiento Estático, Relativo, Absoluto y Fijo
- Flotación y Limpieza en CSS
- Creando Diseños con Flotación
- Índice Z en CSS
Módulo 5: Flexbox
- Introducción a Flexbox
- Propiedades del Contenedor Flex
- Propiedades del Ítem Flex
- Creando Diseños con Flexbox
- Diseño Responsivo con Flexbox
Módulo 6: CSS Grid
- Introducción a CSS Grid
- Propiedades del Contenedor Grid
- Propiedades del Ítem Grid
- Creando Diseños con CSS Grid
- Diseño Responsivo con CSS Grid
Módulo 7: Técnicas Avanzadas de CSS
Módulo 8: Diseño Responsivo
- Introducción al Diseño Responsivo
- Consultas de Medios
- Tipografía Responsiva
- Imágenes Responsivas
- Diseño Mobile-First
Módulo 9: Preprocesadores y Frameworks
- Introducción a los Preprocesadores de CSS
- Conceptos Básicos de Sass
- Conceptos Básicos de Less
- Introducción a los Frameworks de CSS
- Usando Bootstrap
Módulo 10: Mejores Prácticas y Optimización
- Mejores Prácticas de CSS
- Organización del Código CSS
- Minificación de CSS
- Optimización del Rendimiento de CSS
- Depuración de CSS