27 de marzo de 2025

Crear un borde animado con Tailwind CSS

Ejemplo de bordes animados con Tailwind CSS en un diseño oscuro, con fondo degradado de colores vibrantes.

La propiedad border en CSS no puede ser animada de forma nativa. Sin embargo, podemos simular este efecto utilizando un div con un fondo animado y colocando el contenido dentro de un elemento hijo con padding, que actuará como el “grosor” del borde.

Este método puede parecer complejo para quienes no trabajan frecuentemente con CSS o frameworks como Tailwind CSS, pero verás que no es tan difícil y que el resultado final es bastante satisfactorio.

Tipos de gradientes en CSS

Para lograr nuestro efecto de borde animado, debemos conocer los diferentes tipos de gradientes en CSS:

  • Linear Gradient: Degradado lineal a lo largo de una dirección específica.
  • Radial Gradient: Degradado radial desde un punto central hacia afuera.
  • Conic Gradient: Degradado cónico alrededor de un punto central, creando un efecto de “rueda”.

Para nuestro borde animado, utilizaremos conic gradient, ya que permite crear un efecto de giro.

Implementación del borde animado

<div
  class="w-full max-w-lg bg-conic/[from_0deg] from-black via-green-400 to-black  rounded-2xl p-px"
>
  <div class="p-10 rounded-2xl bg-transparent">
    <p class="text-white text-center font-semibold ">
      Fondo del contenedor padre
    </p>
  </div>
</div>

Fondo del contenedor padre




Si agregamos un fondo al contenedor hijo, logramos el efecto de borde:

<div
  class="w-full max-w-lg bg-conic/[from_0deg] from-black via-green-400 to-black rounded-2xl p-px"
>
  <!-- Contenedor padre -->
  <div class="p-10 rounded-2xl bg-zinc-900">
    <!-- Contenedor hijo -->
    <p class="text-white text-center font-semibold">
      Al colocar un fondo al contenedor hijo, logramos el efecto del borde
    </p>
  </div>
</div>

Al colocar un fondo al contenedor hijo, logramos el efecto del borde

Agregando animación con @property

Utilizaremos @property para definir una propiedad personalizada que nos permitirá animar el borde:

@property --border-angle {
  syntax: "<angle>";
  inherits: false;
  initial-value: 0deg;
}

Luego, creamos la animación con @keyframes y la añadimos al tema de Tailwind CSS:

@theme {
  --animate-rotate-border: border-rotate 3s linear infinite;
  @keyframes border-rotate {
    to {
      --border-angle: 360deg;
    }
  }
}

Ahora lo implementaremos en las clases de nuestro contenedor padre

<div
  class="w-full max-w-lg bg-conic/[from_var(--border-angle)] from-black via-green-400 to-black animate-rotate-border rounded-2xl p-px"
>
  <div class="p-10 rounded-2xl bg-transparent">
    <p class="text-white text-center font-semibold">
      Fondo del contenedor padre animado
    </p>
  </div>
</div>

Fondo del contenedor padre animado


Así se ve con un fondo en nuestro contenido

Ajustando el grosor del borde

Modificando el padding, podemos controlar el grosor del borde:

<div
  class="w-full max-w-lg bg-conic/[from_var(--border-angle)] from-black via-green-400 to-black animate-rotate-border rounded-2xl p-[3px]"
>
  <div class="p-10 rounded-2xl bg-zinc-900">
    <p class="text-white text-center font-semibold">
      Ajustando el padding podemos "aumentar el grosor del borde"
      <br />
      <code>p-[3px]</code>
    </p>
  </div>
</div>

Ajustando el padding podemos "aumentar el grosor del borde"
p-[3px]

Personalización del degradado

En Tailwind CSS, podemos controlar la posición de los colores del degradado:

  • from-* → Color de inicio del degradado.
  • via-* → Color intermedio.
  • to-* → Color final del degradado.

También podemos ajustar las posiciones de los colores, por ejemplo:

<div
  class="w-full max-w-lg bg-conic/[from_var(--border-angle)] from-black via-green-400 to-black from-30% to-60% animate-rotate-border rounded-2xl p-px"
>
  <div class="p-10 rounded-2xl bg-transparent">
    <p class="text-white text-center font-semibold">
      Ajustando las posiciones de los colores logramos un efecto diferente
      <br />
      <code>from-30% to-60%</code>
    </p>
  </div>
</div>

Ajustando las posiciones de los colores logramos un efecto diferente
from-30% to-60%

Resultado final

Haré algunos pequeños ajustes, cambiando los colores de from y to para lograr un efecto más natural. Además, usaré un padding de 1px.

<div
  class="w-full max-w-lg bg-conic/[from_var(--border-angle)] from-green-200/20 via-green-400 to-green-200/20 from-30% to-60% animate-rotate-border rounded-2xl p-px"
>
  <div class="p-10 rounded-2xl bg-zinc-900">
    <p class="text-white text-center font-semibold">
      Este es el resultado final
    </p>
  </div>
</div>

Este es el resultado final

Conclusión

Espero que esta guía te haya ayudado a entender cómo crear un borde animado con Tailwind CSS y que puedas implementarlo en tus proyectos. ¡Experimenta con los gradientes y animaciones para obtener efectos únicos! 🎨✨

Compartir

Más Publicaciones