UNPKG

suryajs-animfx

Version:

SuryaJS - A powerful JavaScript animation library with 20+ image, text, and advanced 3D effects

205 lines (177 loc) 3.85 kB
/* 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 !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* 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); } }