Skip to content

Aurora Text

A beautiful aurora text effect

Ship beautiful

Installation

Copy and paste the following code into your project:

vue
<script setup lang='ts'>
interface AuroraTextProps {
    className?: string;
    colors?: string[];
    speed?: number;
}
const props = withDefaults(defineProps<AuroraTextProps>(), {
    colors: () => (["#FF0080", "#7928CA", "#0070F3", "#38bdf8"]),
    speed: 1,
});
const gradientStyle = {
    backgroundImage: `linear-gradient(135deg, ${props.colors.join(", ")}, ${props.colors[0]
        })`,
    WebkitBackgroundClip: "text",
    WebkitTextFillColor: "transparent",
    animationDuration: `${10 / props.speed}s`,
};
</script>

<template>
    <span :class="`relative inline-block ${props.className}`">
        <span class="sr-only">
            <slot />
        </span>
        <span class="relative animate-aurora bg-[length:200%_auto] bg-clip-text text-transparent" :style="gradientStyle"
            aria-hidden="true">
            <slot />
        </span>
    </span>
</template>
js
module.exports = {
  theme: {
    extend: {
      animation: {
        "aurora": 'aurora 8s ease-in-out infinite alternate',
      },
      keyframes: {
        'aurora': {
          '0%': {
            backgroundPosition: '0% 50%',
            transform: 'rotate(-5deg) scale(0.9)',
          },
          '25%': {
            backgroundPosition: '50% 100%',
            transform: 'rotate(5deg) scale(1.1)',
          },
          '50%': {
            backgroundPosition: '100% 50%',
            transform: 'rotate(-3deg) scale(0.95)',
          },
          '75%': {
            backgroundPosition: '50% 0%',
            transform: 'rotate(3deg) scale(1.05)',
          },
          '100%': {
            backgroundPosition: '0% 50%',
            transform: 'rotate(-5deg) scale(0.9)',
          },
        },
      },
    },
  },
}

Props

PropTypeDescriptionDefault
classNamestringThe class for the component.-
colorsstring[]Array of colors used for the aurora effect["#FF0080", "#7928CA", "#0070F3", "#38bdf8"]
speednumberAnimation speed multiplier (1 is default, 2 is twice as fast)1

Released under the MIT License.