suryajs-animfx
Version:
SuryaJS - A powerful JavaScript animation library with 20+ image, text, and advanced 3D effects
205 lines (177 loc) • 3.85 kB
CSS
/* AnimFX CSS Animations */
/* Keyframes for various effects */
@keyframes blink {
0%, 50% { border-color: transparent; }
51%, 100% { border-color: currentColor; }
}
@keyframes glitch {
0% { transform: translate(0); }
20% { transform: translate(-2px, 2px); }
40% { transform: translate(-2px, -2px); }
60% { transform: translate(2px, 2px); }
80% { transform: translate(2px, -2px); }
100% { transform: translate(0); }
}
@keyframes glitchColor {
0% { filter: hue-rotate(0deg); }
25% { filter: hue-rotate(90deg); }
50% { filter: hue-rotate(180deg); }
75% { filter: hue-rotate(270deg); }
100% { filter: hue-rotate(360deg); }
}
@keyframes shake {
0%, 100% { transform: translateX(0); }
10%, 30%, 50%, 70%, 90% { transform: translateX(-2px); }
20%, 40%, 60%, 80% { transform: translateX(2px); }
}
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.05); }
100% { transform: scale(1); }
}
@keyframes bounce {
0%, 20%, 53%, 80%, 100% { transform: translateY(0); }
40%, 43% { transform: translateY(-15px); }
70% { transform: translateY(-7px); }
90% { transform: translateY(-3px); }
}
@keyframes fadeInScale {
0% {
opacity: 0;
transform: scale(0.8);
}
100% {
opacity: 1;
transform: scale(1);
}
}
@keyframes slideInLeft {
0% {
opacity: 0;
transform: translateX(-100px);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
@keyframes slideInRight {
0% {
opacity: 0;
transform: translateX(100px);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
@keyframes flipIn {
0% {
opacity: 0;
transform: perspective(400px) rotateY(-90deg);
}
40% {
transform: perspective(400px) rotateY(-10deg);
}
70% {
transform: perspective(400px) rotateY(10deg);
}
100% {
opacity: 1;
transform: perspective(400px) rotateY(0deg);
}
}
/* Effect Classes */
.glitch-effect {
animation: glitch 0.3s infinite, glitchColor 2s infinite;
position: relative;
}
.glitch-effect::before,
.glitch-effect::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: inherit;
z-index: -1;
}
.glitch-effect::before {
animation: glitch 0.3s infinite reverse;
filter: hue-rotate(90deg);
opacity: 0.8;
}
.glitch-effect::after {
animation: glitch 0.3s infinite;
filter: hue-rotate(180deg);
opacity: 0.8;
}
/* Hover Effects */
.hover-scale:hover {
transform: scale(1.1);
transition: transform 0.3s ease;
}
.hover-rotate:hover {
transform: rotate(5deg);
transition: transform 0.3s ease;
}
.hover-blur:hover {
filter: blur(2px);
transition: filter 0.3s ease;
}
.hover-brightness:hover {
filter: brightness(1.2);
transition: filter 0.3s ease;
}
.hover-shadow:hover {
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);
transition: box-shadow 0.3s ease;
}
/* Text Animation Classes */
.text-reveal {
overflow: hidden;
}
.text-reveal span {
display: inline-block;
opacity: 0;
transform: translateY(100%);
animation: slideInUp 0.6s ease forwards;
}
@keyframes slideInUp {
to {
opacity: 1;
transform: translateY(0);
}
}
/* Utility Classes */
.animfx-hidden {
opacity: 0;
visibility: hidden;
}
.animfx-visible {
opacity: 1;
visibility: visible;
transition: opacity 0.3s ease, visibility 0.3s ease;
}
/* Responsive adjustments */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms ;
animation-iteration-count: 1 ;
transition-duration: 0.01ms ;
}
}
/* Loading spinner */
.animfx-loading {
display: inline-block;
width: 20px;
height: 20px;
border: 3px solid rgba(255, 255, 255, 0.3);
border-radius: 50%;
border-top-color: #fff;
animation: spin 1s ease-in-out infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}