.rainbow-text {
animation: hueRotate 4s linear infinite;
}
@keyframes hueRotate {
from { filter: hue-rotate(0deg); }
to { filter: hue-rotate(360deg); }
}
.blink-text {
animation: blink 1.4s ease-in-out infinite;
}
@keyframes blink {
0%, 100% { opacity: 1; }
50% { opacity: 0.15; }
}
/* wrap each letter in its own span */
.bounce-text span {
display: inline-block;
animation: bounce 1s ease-in-out infinite;
}
.bounce-text span:nth-child(2) { animation-delay: .08s; }
.bounce-text span:nth-child(3) { animation-delay: .16s; }
.bounce-text span:nth-child(4) { animation-delay: .24s; }
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-7px); }
}
.typewriter {
display: inline-block;
overflow: hidden;
white-space: nowrap;
border-right: 2px solid currentColor;
width: 0;
animation:
typing 3s steps(9) infinite,
caret .7s step-end infinite;
}
@keyframes typing {
0% { width: 0; }
55% { width: 9ch; }
100% { width: 9ch; }
}
@keyframes caret {
50% { border-color: transparent; }
}
.shake-text {
display: inline-block;
animation: shake .35s ease-in-out infinite;
}
@keyframes shake {
0%, 100% { transform: translateX(0); }
25% { transform: translateX(-3px); }
75% { transform: translateX(3px); }
}
.glow-text {
color: #fff;
animation: glow 1.8s ease-in-out infinite;
}
@keyframes glow {
0%, 100% { text-shadow: 0 0 4px #ff9ecb, 0 0 8px #ff9ecb, 0 0 12px #b892e8; }
50% { text-shadow: 0 0 10px #ff9ecb, 0 0 20px #b892e8, 0 0 30px #7f7cf0; }
}
/* wrap each letter in its own span */
.flip-text span {
display: inline-block;
animation: flip 2.2s ease-in-out infinite;
}
.flip-text span:nth-child(2) { animation-delay: .1s; }
.flip-text span:nth-child(3) { animation-delay: .2s; }
.flip-text span:nth-child(4) { animation-delay: .3s; }
@keyframes flip {
0%, 40%, 100% { transform: rotateY(0deg); }
20% { transform: rotateY(180deg); }
}
.pulse-text {
display: inline-block;
animation: pulse 1.1s ease-in-out infinite;
}
@keyframes pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.25); }
}
.jello-text {
display: inline-block;
animation: jello 2.2s ease-in-out infinite;
}
@keyframes jello {
0%, 11.1%, 100% { transform: none; }
22.2% { transform: skewX(-12.5deg) skewY(-12.5deg); }
33.3% { transform: skewX(6.25deg) skewY(6.25deg); }
44.4% { transform: skewX(-3.125deg) skewY(-3.125deg); }
55.5% { transform: skewX(1.5625deg) skewY(1.5625deg); }
66.6% { transform: skewX(-0.78125deg) skewY(-0.78125deg); }
}
/* wrap each word in its own span */
.lyric-line {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 0.4em;
}
.lyric-line span {
opacity: 0;
animation: wordFade 5s ease-in-out infinite;
}
.lyric-line span:nth-child(1) { animation-delay: 0s; }
.lyric-line span:nth-child(2) { animation-delay: .3s; }
.lyric-line span:nth-child(3) { animation-delay: .6s; }
.lyric-line span:nth-child(4) { animation-delay: .9s; }
.lyric-line span:nth-child(5) { animation-delay: 1.2s; }
@keyframes wordFade {
0% { opacity: 0; transform: translateY(4px); }
10% { opacity: 1; transform: translateY(0); }
70% { opacity: 1; transform: translateY(0); }
85% { opacity: 0; transform: translateY(-4px); }
100% { opacity: 0; transform: translateY(4px); }
}
/* wrap each letter in its own span */
.wave-text span {
display: inline-block;
animation: wave 1.6s ease-in-out infinite;
}
.wave-text span:nth-child(2) { animation-delay: .1s; }
.wave-text span:nth-child(3) { animation-delay: .2s; }
.wave-text span:nth-child(4) { animation-delay: .3s; }
@keyframes wave {
0%, 60%, 100% { transform: translateY(0); }
30% { transform: translateY(-8px); }
}
.flicker-text {
animation: flicker 2.5s linear infinite;
}
@keyframes flicker {
0%, 19%, 21%, 23%, 25%, 54%, 56%, 100% { opacity: 1; }
20%, 22%, 24%, 55% { opacity: 0.3; }
}
.wiggle-text {
display: inline-block;
animation: wiggle 1.2s ease-in-out infinite;
}
@keyframes wiggle {
0%, 100% { transform: rotate(0deg); }
25% { transform: rotate(-5deg); }
75% { transform: rotate(5deg); }
}
.swing-text {
display: inline-block;
transform-origin: top center;
animation: swing 2s ease-in-out infinite;
}
@keyframes swing {
0%, 100% { transform: rotate(0deg); }
20% { transform: rotate(10deg); }
40% { transform: rotate(-8deg); }
60% { transform: rotate(5deg); }
80% { transform: rotate(-3deg); }
}
.elastic-text {
display: inline-block;
animation: elastic 1.6s ease-in-out infinite;
}
@keyframes elastic {
0%, 100% { transform: scaleX(1) scaleY(1); }
20% { transform: scaleX(1.3) scaleY(0.7); }
40% { transform: scaleX(0.8) scaleY(1.2); }
60% { transform: scaleX(1.1) scaleY(0.9); }
80% { transform: scaleX(0.95) scaleY(1.05); }
}
.neon-text {
color: #fff;
animation: neonFlicker 3s linear infinite;
}
@keyframes neonFlicker {
0%, 100%, 92% { text-shadow: 0 0 5px #7f7cf0, 0 0 15px #7f7cf0, 0 0 25px #b892e8; }
93%, 95% { text-shadow: none; }
94%, 96% { text-shadow: 0 0 5px #7f7cf0, 0 0 15px #7f7cf0; }
}
.heartbeat-text {
display: inline-block;
animation: heartbeat 1.3s ease-in-out infinite;
}
@keyframes heartbeat {
0%, 100% { transform: scale(1); }
14% { transform: scale(1.2); }
28% { transform: scale(1); }
42% { transform: scale(1.2); }
70% { transform: scale(1); }
}
.spacing-text {
display: inline-block;
animation: spacing 2.4s ease-in-out infinite;
}
@keyframes spacing {
0%, 100% { letter-spacing: 0px; }
50% { letter-spacing: 6px; }
}
/* wrap the marquee span in a fixed-width, overflow:hidden container */
.marquee-text {
display: inline-block;
white-space: nowrap;
animation: marquee 6s linear infinite;
}
@keyframes marquee {
0% { transform: translateX(0%); }
100% { transform: translateX(-50%); }
}
.fadeinout-text {
display: inline-block;
animation: fadeInOut 3s ease-in-out infinite;
}
@keyframes fadeInOut {
0%, 100% { opacity: 0; }
50% { opacity: 1; }
}
.hover-grow {
display: inline-block;
transition: transform .25s ease;
}
.hover-grow:hover {
transform: scale(1.2);
}
.hover-shake {
display: inline-block;
}
.hover-shake:hover {
animation: hoverShake .35s ease-in-out infinite;
}
@keyframes hoverShake {
0%, 100% { transform: translateX(0); }
25% { transform: translateX(-4px); }
75% { transform: translateX(4px); }
}
.hover-glow {
display: inline-block;
transition: text-shadow .3s ease;
}
.hover-glow:hover {
text-shadow: 0 0 10px #ff9ecb, 0 0 20px #b892e8, 0 0 30px #7f7cf0;
}
.hover-underline {
position: relative;
display: inline-block;
}
.hover-underline::after {
content: "";
position: absolute;
left: 0;
bottom: -2px;
width: 100%;
height: 2px;
background: currentColor;
transform: scaleX(0);
transform-origin: right;
transition: transform .3s ease;
}
.hover-underline:hover::after {
transform: scaleX(1);
transform-origin: left;
}
.hover-color {
display: inline-block;
transition: color .3s ease;
}
.hover-color:hover {
color: #b892e8;
}
.hover-tilt {
display: inline-block;
transition: transform .25s ease;
}
.hover-tilt:hover {
transform: rotate(-6deg) scale(1.05);
}
.hover-letter {
display: inline-block;
transition: letter-spacing .3s ease;
}
.hover-letter:hover {
letter-spacing: 4px;
}
/* wrap each letter in its own span */
.hover-flip span {
display: inline-block;
transition: transform .3s ease;
}
.hover-flip:hover span:nth-child(1) { transform: rotateY(180deg); transition-delay: 0s; }
.hover-flip:hover span:nth-child(2) { transform: rotateY(180deg); transition-delay: .05s; }
.hover-flip:hover span:nth-child(3) { transform: rotateY(180deg); transition-delay: .1s; }
.hover-flip:hover span:nth-child(4) { transform: rotateY(180deg); transition-delay: .15s; }
.hover-bounce {
display: inline-block;
}
.hover-bounce:hover {
animation: hoverBounce .5s ease;
}
@keyframes hoverBounce {
0%, 100% { transform: translateY(0); }
30% { transform: translateY(-10px); }
50% { transform: translateY(0); }
70% { transform: translateY(-4px); }
}
.hover-blur {
display: inline-block;
filter: blur(3px);
transition: filter .3s ease;
}
.hover-blur:hover {
filter: blur(0px);
}