Luis Carlos Pando's avatar Con solamente 3 líneas de CSS es posible alinear verticalmente cualquier elemento que queramos con la ayuda de transform: translateY, aún así no tengamos idea de su altura. La propiedad transform es comúnmente usada para rotar y escalar elementos, pero con su función translateY ahora podemos alinear verticalmente cualquier elemento. Antes era necesario conocer la Permalink
Saltar navegación

¡Estoy en vivo!

#GeekStuff: Alinear verticalmente cualquier elemento usando solamente 3 líneas de CSS

Actualizado por ( Mastodon @mijo ) Enlace permanente Permalink

Con solamente 3 líneas de CSS es posible alinear verticalmente cualquier elemento que queramos con la ayuda de transform: translateY, aún así no tengamos idea de su altura.

La propiedad transform es comúnmente usada para rotar y escalar elementos, pero con su función translateY ahora podemos alinear verticalmente cualquier elemento. Antes era necesario conocer la altura del elemento para ya sea posicionarlo absolutamente dentro de su contenedor o asignándole line-height.

  
    .elemento {
      position: relative;
      top: 50%;
      transform: translateY(-50%);
    }
  

Eso es todo lo que hay que hacer (¿qué hermoso?). Es una técnica similar al método de posicionar absolutamente las cosas (lo cual odio hacer), pero con la ventajota de que no tenemos que especificar la altura del elemento en cuestión y la posición es calculada automáticamente. Ahh, casi olvido mencionar que también funciona en IE9. 😉

También podemos usar el selector placeholder en Sass y también de una vez agregamos los prefijos correspondientes para asegurar un buen cross browsing:

  
    %alineado-vertical {
      position: relative;
      top: 50%;
      -webkit-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
      transform: translateY(-50%);
    }

    .elemento p {
      @extend %alineado-vertical;
    }
  

Es importante señalar que para evitar problemas en la manera en la que se renderiza el elemento que vamos a alinear, agreguemos las siguientes propiedades al contenedor padre:

  
    .contenedor-elemento {
      -webkit-transform-style: preserve-3d;
      -moz-transform-style: preserve-3d;
      transform-style: preserve-3d;
    }

    .elemento {
      position: relative;
      top: 50%;
      transform: translateY(-50%);
    }
  

Espero les sea de utilidad. 🙂


  • Likes

      • Comentarios

      Coméntame por correo o respóndeme en Mastodon (aunque parece que este post no tiene un toot asociado en Mastodon 😐). ¿Algo que no tenga que ver con este post? Pásate a mi página de página de contacto o contáctame en Discord.

      ¿Te gustó este post?