Flexbox es una herramienta invaluable en CSS que permite alinear y posicionar elementos de modo eficaz en el diseño web. Soluciona problemas de alineación que antes eran complejos de gestionar, simplificando el diseño de interfaces. Esto lo convierte en un recurso esencial para cualquier diseñador o desarrollador web. Con Flexbox, puedes alinear elementos tanto vertical como horizontalmente, pero no en ambas direcciones simultáneamente. Es ideal para centrar elementos, moverlos a los lados y disponerlos como desees, de manera sencilla.
¿Cómo funciona el modelo padre-hijo en Flexbox?
Para entender cómo utilizar Flexbox, debemos tener claro el concepto de contenedores (padres) y elementos hijos. Elementos contenedores son aquellos que poseen otros elementos dentro, mientras que los elementos hijos son aquellos contenidos dentro de otro. Flexbox necesita que ambos tipos de elementos usen propiedades específicas para aprovechar al máximo su potencial.
Propiedades de los elementos contenedores: Como regla general, necesitas declarar display: flex; al contenedor. Además, puedes manipular la dirección de los elementos y ajustar su alineación y espaciamiento mediante propiedades como justify-content.
Elementos hijos: En estos, puedes cambiar su orden, tamaño, y otras características visuales con propiedades específicas disponibles para los hijos.
¿Cuál es la diferencia entre las propiedades de los elementos padres e hijos en Flexbox?
Para los elementos contenedores, propiedades como justify-content y align-items son cruciales. Estas permiten manipular la disposición de los hijos respecto al eje principal (row o column). Por el contrario, en los elementos hijos, propiedades como flex-grow, flex-shrink, y order permiten manipular su crecimiento, reducción y orden relativo.
Ejemplo práctico - Centro de elementos en pantalla completa
Imagina que deseas centrar elementos en una pantalla completa. Iniciarías estableciendo el contenedor principal con display: flex;.
#contenedor{display: flex;justify-content: center;align-items: center;height:100vh;/* Ocupa toda la altura visible */}
Al aplicar justify-content: center; y align-items: center;, los elementos dentro del contenedor se centrarán tanto vertical como horizontalmente. Sin embargo, es clave asegurarse de que el contenedor tiene suficiente espacio para que estos ajustes sean visibles. Aquí height: 100vh; asegura que el contenedor ocupe toda la altura de la ventana visible.
¿Cómo cambian las visualizaciones al modificar las propiedades de Flexbox?
Cuando definir flex-direction: row;, los elementos hijos están uno al lado del otro. Cambiar a flex-direction: column; coloca los elementos de arriba hacia abajo. Esto afecta la forma en que propiedades como justify-content y align-items operan, ya que su comportamiento se basa en la dirección establecida.
Consejos prácticos
Comprende bien el modelo de contenedor-hijo: Asegúrate de definir correctamente qué elementos son padres e hijos en tu documento HTML.
Experimenta con las guías visuales: Utiliza guías como CSS-TRICKS Flexbox Guide para visualizar cómo diferentes propiedades afectan el diseño.
Ajusta según el diseño requerido: Entiende que cambios en flex-direction afectan cómo se aplican justify-content y align-items.
Flexbox es una herramienta poderosa que agiliza el proceso de diseño web. Con práctica y casos de uso concretos, puedes optimizar la disposición de tus elementos en pantalla para lograr diseños más atractivos y funcionales. Si te interesa profundizar en el tema, considera seguir cursos completos en plataformas educativas como Platzi para convertirte en un experto en CSS Flexbox. ¡Ánimo y sigue aprendiendo!
Estoy fascinado con todas las posibilidades!!! después de probar distintas combinaciones va quedando más o menos así:
Jaja la arena. Está genial! 💪
Smash :v
Para cuando quieran mover una linea de código pueden presionar " ALT + (flecha de abajo o arriba) " para que no estén copiando y pegando la linea en la parte que quieran, esto les puede ahorrar un buen de tiempo
¡Gracias!
Gracias bro
No es mucho, pero es trabajo honesto
Que dices bro, pero si está super bacano!!
En flexbox se trabaja con elementos hijos y elementos padre
Elementos Padre: son aquellos que contienen otras etiquetas o elementos por dentro
Elementos hijos: son aquellos elementos que están dentro de un elemento padre y no contienen a nadie más por dentro
<aside>
💡 Pueden haber padres dentro de otros padres, pero en este caso son hijos y padres al mismo tiempo, por lo que pueden usar ambas propiedades al tiempo
</aside>
Excelente aporte, gracias!
El poster esta genial, me hubiera gustado conocerlo antes, para imprimirlo y colgarlo jaja.
Gracias! muy buen aporte!
No se si a uno de ustedes les pasa, pero al menos a mi, a medida que voy evolucionando me va como que gustando mas este mundo. Cuando vemos un tema complejo por primera vez, sí que frustra, pero si recordamos que programar es controlar esa frustración, y nos damos el tiempo para digerir los temas, llega un punto en el que no digamos que lo dominas, pero lo entiendes muy bien, y es donde sientes mucha gratificación porque te das cuenta de que si se puede.
Never Stop Learning!!!
Retomando el curso...
Así esta quedando mi juego por ahora.
Con las herramientas del inspector podemos agregar cosas como justify-content y demás para ir viendo cómo queda el resultado. En este caso el justify-content no se logra percibir debido a que no hay suficiente espacio para ejecutarlo
Para ello podemos usar todo el tamaño de lo que estamos viendo en pantalla, usando 100vh como medida en height
vh = view height
Lo último que podemos hacer es centrar en el medio de la pantalla el contenido, con:
align-items: center;
De esta manera, todo lo del contenido de seleccionar mascota queda centrado
Cual es la diferencia de escribir 100vh, 100vwó 100%
Hola, el 100vh es vertical, el 100vw es horizontal. Pero éstas nedidas son de la pantalla (viewport) del dispositivo. no importa donde esté el elemento que tengas éstas propiedades siempre tomara eltamano de la pantalla.
y el 100% es respecto al elemento padre, si el padre mide 200px el hijo con el 100% tomará esos 200px.
Pero si se le agrega 100vw (por ejemplo) tomara el tamano del ancho de la pantalla completa
GRACIAS !!! Estas eran de las cosas que me tenían confuso, pero ahora puedo dormir en paz 😄
Para que lo guarden en sus apuntes de la clase:
Hola, por un momento al final no me estaba dando la distribución como a la profe, y era porque cuando copiaba el código no me daba. Luego me di cuenta que después de flex no había puesto ";" y esto como que inhabilitaba lo que seguía. Podrías servirles si de pronto les pasa lo mismo :)
💻 Comparto mi avance haste el momento:
💙Pantalla 1:
💙Pantalla 2:
🧡Demo:
----------------------------------------------
💻 Repo:
🎮 Testea:
----------------------------------------------
🎬 Mira los tutoriales:
▶Capítulo 1:
▶Capítulo 2:
▶Capítulo 3:
▶Capítulo 4:
▶Capítulo 5:
▶Capítulo 6:
▶Capítulo 7:
▶Capítulo 8:
▶Capítulo 9:
▶Capítulo 10:
▶Capítulo 11:
Autor: Raúl Sánchez R.
Hola! Intente aplicar el mismo código flex para centrar el id "Seleccionar ataque", "mensajes" y el "botón reiniciar". Pero solo se ha aplicado para mensajes.
Intento adjuntar la captura pero me pone esto: !
Nota: la (S) de seleccionar siempre la tuve en mayúscula y funciona para seleccionar mascota.
Gracias!
Lo mismo me sucede, creo que se debe a que los estilos de CSS solo se aplican a los elementos que se cargan en el HTML de forma inicial mientras que las secciones posteriores como "Seleccionar Ataque" no está presente en un inicio y después la mostramos con Javascript.
No sé porque se comporte así o como solucionarlo, ojalá alguien nos saque de la duda.