> Manuales > Manual de TailwindCSS

Cómo hacer un avatar con datos de usuario (nombre y correo), con efectos hover para mejorar la experiencia de usuario, usando el framework CSS Tailwind.

Interfaz para un avatar con datos en Tailwind CSS

En este artículo seguimos trabajando en el desarrollo de interfaces de usuario desarrolladas con las clases de utilidad del framework Tailwind CSS. Vamos a hacer una típica caja para un avatar en la que mostraremos la imagen del usuario y sus datos principales (nombre y correo). Lo haremos aplicando algunos conocimientos interesantes para hacer efectos sobre las imágenes, y grupos de hover, por lo que espero que pueda resultar una práctica interesante para quien está aprendiendo Tailwind.

Este es un artículo fundamentalmente práctico. Recuerda que tienes el Manual de Tailwind CSS para aprender lo básico y poder entender qué es lo que se está haciendo aquí y cómo montar un proyecto en el que uses este framework CSS.

Imagen para un avatar

Comenzamos creando una simple imagen para un avatar de un usuario. Básicamente lo que queremos es que aparezca con sus bordes totalmente redondeados y que se adapte el tamaño a una anchura y altura determinados, sin deformar la imagen independientemente de las proporciones que tenga.

<img 
  src="/persona.jpg" 
  alt="Avatar" 
  class="w-16 h-16 rounded-full object-cover">

Un repaso a las clases de utilidad que hemos usado:

Hasta aquí no hemos hecho demasiado especial. Vamos a seguir aportando contenido a esta caja y estilos más potentes a continuación.

Una caja tipo cápsula para el avatar

Ahora que tenemos la imagen vamos a avanzar un poco creando una caja para ese avatar, de tipo cápsula con rounded-full, que tenga un fondo gris oscuro y que incluya el nombre y el email de la persona.

<div class="inline-block bg-gray-700 text-white px-1 py-1 rounded-full">
  <div class="flex items-center">
    <img src="/persona.jpg" alt="Avatar" class="w-12 h-12 rounded-full border-2 border-white object-cover mr-2">
    <div class="mr-4">
        <div class="font-bold">Nombre de la Persona</div>
        <div class="text-sm">email@ejemplo.com</div>
    </div>
  </div>
</div>

Aquí tenemos un montón de novedades en el código pero básicamente consiste en una caja con fondo que dentro tiene los elementos que habíamos comentado.

Ahora voy a comentar las clases de utilidad más importantes que se han usado y que son esenciales para este diseño.

Luego tenemos dentro un contenedor flex, que es importante para conseguir que la imagen aparezca a un lado y los datos de este usuario al otro lado y podamos centrar en la vertical ambos bloques:

El resto de estilos son bastante básicos por lo que espero que los entiendas. El resultado lo puedes ver en la siguiente imagen:

Interfaz para un avatar con datos del usuario realizada con Tailwind CSS

Efecto hover sobre la caja del avatar

Ahora vamos a hacer un efecto hover bien sencillo, que sería simplemente cambiar el color de fondo de la cápsula.

<div class="inline-block bg-orange-700 text-white px-1 py-1 rounded-full hover:bg-yellow-800 transition duration-300 ease-in-out">
  <div class="flex items-center">
    <img src="/persona.jpg" alt="Avatar" class="w-12 h-12 rounded-full border-2 border-white object-cover mr-2">
    <div class="mr-4">
        <div class="font-bold">Nombre de la Persona</div>
        <div class="text-sm">email@ejemplo.com</div>
    </div>
  </div>
</div>

Las clases nuevas en este caso son:

Esto ha estado muy bien y nos ha dado un efecto interesante en la caja del avatar pero podría mejorarse.

Cómo usar group y group-hover para cambiar elementos internos cuando hay un hover en el padre

Ahora vamos a pensar que el efecto hover que deseas haga que el fondo de la cápsula que estaba bastante oscuro fuera a unos tonos bastante claros. ¿Qué pasaría con los textos y el borde de la imagen? pues que no contrastaría suficiente con un fondo claro.

Eso se puede solucionar con las clases group y la variante group-hover como vamos a ver. Pero antes que nada explico qué son estas nuevas clases de utilidad.

El código de este ejemplo nos quedaría así.

<div class="group inline-block bg-teal-800 text-white px-1 py-1 rounded-full hover:bg-yellow-100 transition duration-300 ease-in-out">
  <div class="flex items-center">
    <img src="/persona.jpg" alt="Avatar" class="w-12 h-12 rounded-full border-2 border-white object-cover mr-2 group-hover:border-sky-500 group-hover:brightness-125">
    <div class="mr-4 group-hover:text-gray-700">
        <div class="font-bold">Nombre de la Persona</div>
        <div class="text-sm">email@ejemplo.com</div>
    </div>
  </div>
</div>

Como ves, hemos colocado la clase group en el padre de toda la interfaz, la cápsula completa.

Luego hemos usado estas variantes:

El resultado de este efecto lo puedes ver en el siguiente Gif animado.

Animación del efecto hover-group para la caja del avatar en Tailwind CSS

De este modo hemos conseguido una interfaz de usuario atractiva para los avatares, podrá gustar más o menos pero al menos esperamos que te haya servido para aprender acerca de las clases de utilidad de Tailwind CSS y temas un poco más avanzados como los grupos de hover o los filtros de imagen.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual