Flexbox
Introducción
Durante esta sesión veremos
Algunas unidades de medida nuevas:
%
,vh
yvw
.Las propiedades
min-width
,max-width
,min-height
ymax-height
.Cómo distribuir los elementos en una pÔgina usando Flexbox.
Unidades
En la lección anterior vimos los pĆxels (px
), unidades absolutas, cuyo tamaƱo no varĆa. Un pĆxel siempre es un pĆxel. Veamos algunas unidades mĆ”s.
Unidades relativas al viewport
El viewport es la zona visible en una web. Mide 100vw
de ancho y 100vh
de alto siempre, en la pantalla pequeña de un móvil o en la grande de un portÔtil.
Las unidadesvw
y vh
nos permiten ajustar ancho y alto de manera relativa al viewport.
Unidad de porcentaje
La unidad de %
nos permite ajustar tamaƱos para que sean un porcentaje del tamaƱo de su etiqueta madre.
TamaƱos mĆnimos y mĆ”ximos
Con max-width
, min-width
, max-height
y min-height
podemos controlar los tamaƱos de los elemento para que sean fluidos, y se comporten como nosotras queremos frente a diferentes tamaƱos de ventanas del navegador.
Flexbox
Según la MDN, la propiedad Flexible Box, o flexbox, de CSS3 es un modo de diseño que permite colocar los elementos de una pÔgina para que se comporten de forma predecible cuando el diseño de la pÔgina debe acomodarse a diferentes tamaños de pantalla y diferentes dispositivos.
Hasta que apareció Flexbox la única manera de distribuir elementos en horizontal (por ejemplo: un menú horizontal, o un bloque principal y uno secundario) era calculando el espacio que debe ocupar cada bloque y controlando mucho que ningún elemento se saliese de lo planificado.
Con flexbox podemos disponer de un bloque flexible que de manera natural se ajuste dentro de unos parƔmetros que le indiquemos.
Para quƩ sirve
Flexbox es una herramienta imprescindible en la maquetación actual y nos permite tener elementos HTML que se ajusten a las diferentes pantallas de los diferentes dispositivos.
En quƩ casos se utiliza
Pues hay casos muy evidentes, como hacer un pie fijo cuando hay poco contenido, o un panel lateral con una parte fija y otra flexible. Pero también hay otros mÔs simples como un menú horizontal, un listado de iconos de redes sociales o una noticia donde queremos que a veces la imagen vaya arriba o tras el texto. BÔsicamente lo podemos/querremos usar en cualquier estructura que se distribuya en vertical u horizontal y sobre la que queramos controlar el espaciado, orden o alineamiento.
EJERCICIO 1
FLEX y FLEX DIRECTION
Crear un contenedor flex de 500px por 500px y con 6 o mƔs elementos.
Hacer que se distribuyan en horizontal o vertical
Indicar cuƔl es el eje principal
EJERCICIO 2
FLEX WRAP
Teniendo una lista de 10 a 15 imƔgenes de 200x100 px, hacer un bloque flexbox donde las imƔgenes se distribuyan por el eje horizontal y se vayan apilando uno detrƔs de otro.
EJERCICIO 3
JUSTIFY CONTENT y ALIGN ITEMS
Hacer un menĆŗ horizontal con un contenedor flex de 100px de alto
Las opciones de menú serÔn:
Home
Proyectos
Equipo
Blog
Contacto
Hacer que se distribuyan horizontalmente ocupando todo el espacio disponible, que la primera opción esté a 20px del borde izquierdo, y la última esté a 20px del borde derecho
Todos los textos deben aparecer centrados verticalmente en el contenedor de 100px
El espacio restante debe usarse para separar las opciones de menĆŗ, unas de otras
EJERCICIO 4
ORDER
Hacer un listado de noticias con imagen, tĆtulo y pĆ”rrafo de contenido
Meterlas en un contenedor flex y hacer que se distribuyan en dos columnas
Elegir una noticia, por ejemplo, la Ćŗltima, y ponerla como destacada, en primer lugar y ocupando las dos columnas
EJERCICIO 5
FLEX/GROW/SHRINK/BASIS
Hacer una pƔgina con <header>
, <main>
y <footer>
y hacer que aunque haya poco contenido el footer siempre estƔ abajo de la pƔgina y el main ocupe todo el espacio disponible. Si hubiese mucho contenido el footer debe colocarse tras el main, de forma natural.
Pista: Tendremos que apoyarnos en
min-height
yvh
para realizar este ejercicio.
EJERCICIO 6
Convertir la imagen anterior a código usando HTML y CSS y lo que habéis aprendido hoy de Flexbox. Los requisitos son los siguientes:
Las medidas tienen que ser relativas, es decir, los elementos de la pƔgina deben adaptarse al ancho de la ventana del navegador web. Si el tamaƱo de la ventana aumenta, el tamaƱo de los elementos debe aumentar.
El ancho del conjunto entero debe ser del 100% con un ancho mƔximo de 960px
Cada bloque debe de crearse con una etiqueta HTML5 (header, footer, aside...) y debe tener un tĆtulo que estĆ© centrado (como aparece en la imĆ”gen). El bloque central (que serĆa un article), en vez de tener un tĆtulo, tendrĆ” un pĆ”rrafo con un texto aleatorio, podĆ©is escribir dentro de Ć©l lo que querĆ”is.
EJERCICIO 7
Convertir la imagen anterior a código usando HTML y CSS y lo que habéis aprendido hoy de Flexbox. Los requisitos son los siguientes:
En este caso si el tamaño de la ventana aumenta solo aumentarÔ el tamaño del bloque central, el bloque gris de la izquierda y el grupo que compone la puntuación, texto y estrella de la derecha siempre tendrÔn el mismo tamaño (ejemplo abajo)
El ancho del conjunto entero debe ser del 100% con un ancho mƔximo de 840px
Para el bloque gris de la izquierda debĆ©is buscar una imagen cuadrada y colocarla ahĆ
No te preocupes por el tamaño de cada elemento, lo importante es que el resultado tenga una composición similar
Para redondear los bordes debĆ©is usar border-radius con unidades en pĆxel (por ejemplo, border-radius: 5px)
Si tenƩis cualquier duda, preguntad.
EJERCICIO 8
Crear una pĆ”gina con un texto simple centrado que ocupe el 100% de la pantalla hasta un mĆ”ximo de 600 pĆxeles. Este texto deberĆ” tener un tĆtulo, un autor y una fecha de creación organizado de la siguiente forma.
AdemÔs deberÔ tener una cabecera con un fondo que ocupe toda la pantalla y un contenido que ocupe el mismo ancho que el texto. A su vez, tendrÔ que tener también un footer que se quede pegado en la parte inferior de la pÔgina. Cuando haya poco texto se mantendrÔ ahà y cuando aparezca mucho mÔs texto se irÔ hacia abajo, siempre al final de la pÔgina.
Ejemplo de la pƔgina cuando el texto es largo
Ejemplo de la pƔgina cuando el texto es corto
Es importante utilizar flexbox para los elementos del header de la pƔgina y el footer. Si tenƩis cualquier duda, preguntad.
BONUS
EJERCICIO 9 BONUS
hacer que el contenedor
.box
ocupe el 50% de ancho y el 100% de altohacer que el contenedor
.box
ocupe el 10% de ancho y el 10% de altohacer que el contenedor
.box
ocupe el 100% de ancho y el 80% de alto
Recursos externos
TeorĆa para aprender flexbox
Juegos para aprender flexbox
PƔgina interactiva para aprender flexbox
GuĆa completa de Flexbox (inglĆ©s)
Last updated
Was this helpful?