smart-museum-front / css /animations.css
youssef357402's picture
Upload css/animations.css with huggingface_hub
e9c2b2a verified
Raw
History Blame Contribute Delete
6.7 kB
/* animations.css - Premium Animation System */
/* ========== KEYFRAME ANIMATIONS ========== */
/* Fade In */
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Fade In Up */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Fade In Down */
@keyframes fadeInDown {
from {
opacity: 0;
transform: translateY(-20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Slide In Right */
@keyframes slideInRight {
from {
opacity: 0;
transform: translateX(30px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* Slide In Left */
@keyframes slideInLeft {
from {
opacity: 0;
transform: translateX(-30px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* Scale In */
@keyframes scaleIn {
from {
opacity: 0;
transform: scale(0.9);
}
to {
opacity: 1;
transform: scale(1);
}
}
/* Spin */
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
/* Pulse */
@keyframes pulse {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
/* Bounce */
@keyframes bounce {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-10px);
}
}
/* Shake */
@keyframes shake {
0%, 100% {
transform: translateX(0);
}
10%, 30%, 50%, 70%, 90% {
transform: translateX(-5px);
}
20%, 40%, 60%, 80% {
transform: translateX(5px);
}
}
/* Shimmer (Loading Effect) */
@keyframes shimmer {
0% {
background-position: -1000px 0;
}
100% {
background-position: 1000px 0;
}
}
/* Progress Bar */
@keyframes progress {
from {
width: 0%;
}
to {
width: 100%;
}
}
/* ========== ANIMATION UTILITY CLASSES ========== */
/* Fade Animations */
.animate-fadeIn {
animation: fadeIn 400ms cubic-bezier(0.4, 0, 0.2, 1);
}
.animate-fadeInUp {
animation: fadeInUp 400ms cubic-bezier(0.4, 0, 0.2, 1);
}
.animate-fadeInDown {
animation: fadeInDown 400ms cubic-bezier(0.4, 0, 0.2, 1);
}
/* Slide Animations */
.animate-slideInRight {
animation: slideInRight 400ms cubic-bezier(0.4, 0, 0.2, 1);
}
.animate-slideInLeft {
animation: slideInLeft 400ms cubic-bezier(0.4, 0, 0.2, 1);
}
/* Scale Animation */
.animate-scaleIn {
animation: scaleIn 300ms cubic-bezier(0.4, 0, 0.2, 1);
}
/* Spin Animation */
.animate-spin {
animation: spin 1s linear infinite;
}
.animate-spin-slow {
animation: spin 2s linear infinite;
}
/* Pulse Animation */
.animate-pulse {
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
/* Bounce Animation */
.animate-bounce {
animation: bounce 1s ease-in-out infinite;
}
/* Shake Animation */
.animate-shake {
animation: shake 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}
/* Shimmer Animation */
.animate-shimmer {
background: linear-gradient(
90deg,
#f1f5f9 0%,
#e2e8f0 50%,
#f1f5f9 100%
);
background-size: 1000px 100%;
animation: shimmer 2s infinite;
}
[data-theme="dark"] .animate-shimmer {
background: linear-gradient(
90deg,
#1e293b 0%,
#334155 50%,
#1e293b 100%
);
}
/* ========== TRANSITION UTILITIES ========== */
.transition-none {
transition: none !important;
}
.transition-all {
transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1) !important;
}
.transition-fast {
transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1) !important;
}
.transition-slow {
transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1) !important;
}
/* ========== HOVER EFFECTS ========== */
.hover-lift {
transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
}
.hover-lift:hover {
transform: translateY(-2px);
}
.hover-scale {
transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
}
.hover-scale:hover {
transform: scale(1.05);
}
.hover-shadow {
transition: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1);
}
.hover-shadow:hover {
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.12);
}
/* ========== LOADING STATES ========== */
.skeleton {
background: linear-gradient(
90deg,
#f1f5f9 0%,
#e2e8f0 50%,
#f1f5f9 100%
);
background-size: 200% 100%;
animation: shimmer 1.5s infinite;
border-radius: 8px;
}
[data-theme="dark"] .skeleton {
background: linear-gradient(
90deg,
#1e293b 0%,
#334155 50%,
#1e293b 100%
);
}
.skeleton-text {
height: 16px;
margin-bottom: 8px;
}
.skeleton-title {
height: 24px;
width: 60%;
margin-bottom: 12px;
}
.skeleton-avatar {
width: 40px;
height: 40px;
border-radius: 50%;
}
.skeleton-card {
height: 200px;
border-radius: 12px;
}
/* ========== STAGGER ANIMATIONS ========== */
.stagger-item {
animation: fadeInUp 400ms cubic-bezier(0.4, 0, 0.2, 1);
animation-fill-mode: both;
}
.stagger-item:nth-child(1) { animation-delay: 0ms; }
.stagger-item:nth-child(2) { animation-delay: 50ms; }
.stagger-item:nth-child(3) { animation-delay: 100ms; }
.stagger-item:nth-child(4) { animation-delay: 150ms; }
.stagger-item:nth-child(5) { animation-delay: 200ms; }
.stagger-item:nth-child(6) { animation-delay: 250ms; }
.stagger-item:nth-child(7) { animation-delay: 300ms; }
.stagger-item:nth-child(8) { animation-delay: 350ms; }
/* ========== PAGE TRANSITIONS ========== */
.page-enter {
opacity: 0;
transform: translateY(20px);
}
.page-enter-active {
opacity: 1;
transform: translateY(0);
transition: all 400ms cubic-bezier(0.4, 0, 0.2, 1);
}
.page-exit {
opacity: 1;
transform: translateY(0);
}
.page-exit-active {
opacity: 0;
transform: translateY(-20px);
transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
}
/* ========== REDUCED MOTION ========== */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
.animate-fadeIn,
.animate-fadeInUp,
.animate-fadeInDown,
.animate-slideInRight,
.animate-slideInLeft,
.animate-scaleIn,
.animate-spin,
.animate-pulse,
.animate-bounce,
.animate-shake,
.animate-shimmer,
.skeleton,
.stagger-item {
animation: none !important;
}
.hover-lift:hover,
.hover-scale:hover {
transform: none !important;
}
}