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
orderLa 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-growLa 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-shrinkLa 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-basisLa 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
flexLa 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-selfLa 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
