Saltar navegación

¡Estoy en vivo!

¡El Mode 7 Grand Prix está en vivo!

Código del torneo: 0746-6549-8155

#GeekStuff: Utilizando Flexbox para alinear elementos en CSS

Actualizado por ( @mijo) · Permalink

Flexbox es una propiedad y/o técnica de CSS3 que ha estado ganando mucha popularidad este año entre varios desarrolladores debido a lo fácil que nos solucionó los dolores de cabeza al momento de querer posicionar elementos enseguida de otros (p. ej. un main al lado de un aside).

Gracias a las bondades de flexbox es sumamente sencillo alinear y posicionar los elementos que queramos, a continuación les muestro un ejemplo sencillo:


     <div class="container">
          <main>Aquí va algo</main>
          <aside>Aquí va algo también</aside>
     </div>
  

Le damos estilos dummy a ese markup para notar los cambios:


    .container {
      background-color: blue;
      padding: 5px;
    }

    main {
      background-color: green;
      min-height: 300px;
    }

    aside {
      background-color: yellow;
      min-height: 300px;
    }
  

Luego le asignamos al .container (el contenedor de nuestros elementos) la propiedad display: flex; para indicar que ese elemento y cada elemento hijo utilizará la propiedad flexbox, esto quiere decir que tanto .container como main y aside serán elementos flex.


    .container {
      background-color: blue;
      padding: 5px;
      display: flex;
    }
  

Esto hará que main y aside se pongan uno al lado del otro, pero la cosa no termina ahí, también podemos especificar que tanto espacio queremos que cada elemento dentro de .container ocupe:


    main {
      background-color: green;
      min-height: 300px;
      flex: 2;
    }

    aside {
      background-color: yellow;
      min-height: 300px;
      flex: 1;
    }
  

El código de arriba hará por ejemplo que main ocupe 2/3 del espacio disponible en .container y aside ocupará el 1/3 restante. ¿Por qué tercios?, porque si sumamos los valores flex que le dimos a tales elementos nos da 3 como resultado, main ocupará 2/3 y aside 1/3. Pueden ser los valores que sean, no importa, por ejemplo:


    main {
      background-color: green;
      min-height: 300px;
      flex: 4;
    }

    aside {
      background-color: yellow;
      min-height: 300px;
      flex: 2;
    }
  

En el código de arriba main ocupará 4/6 del espacio disponible y aside 2/6 del espacio disponible. Todo esto posicionando a main y a aside uno enseguida del otro.

¿Es mejor que usar float: left; y float: right; no creen?

Flexbox funciona de manera correcta en navegadores modernos, pueden revisar la compatibilidad completa aquí.

Los invito a experimentar cómo funciona flexbox usando el ejemplo que aquí les pongo, verán que se podrán ahorrar muchos dolores de cabeza y sobre todo, ahorrarán mucho tiempo en su workflow.

  • Kudos

  • ¡Nuevo!

Comentarios

Para comentar aquí basta con mandarme un reply o interactuar de alguna manera con el toot de este post (darle like o darle boost) vía Mastodon (las razones las explico aquí). Si no tienes cuenta y aún así te gustaría decirme algo, entonces me puedes contactar en [email protected] o Discord.