Aurora Text
A beautiful aurora text effect
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
| Prop | Type | Description | Default |
|---|---|---|---|
className | string | The class for the component. | - |
colors | string[] | Array of colors used for the aurora effect | ["#FF0080", "#7928CA", "#0070F3", "#38bdf8"] |
speed | number | Animation speed multiplier (1 is default, 2 is twice as fast) | 1 |