UNPKG

mycsslab

Version:

MyCSSLab Quantum v3.0 - Revolutionary CSS framework with AI-powered intelligence, holographic UI, neural networks, and quantum effects

1,425 lines (1,200 loc) 26.2 kB
/** * FluxCSS Button Components * Comprehensive button system with variants, sizes, states, and animations */ /* Base Button */ .my-btn { display: inline-flex; align-items: center; justify-content: center; padding: 0.5rem 1rem; border: 1px solid transparent; font-size: 0.875rem; font-weight: 500; line-height: 1.25rem; border-radius: 0.375rem; transition: all 0.2s ease-in-out; cursor: pointer; text-decoration: none; user-select: none; position: relative; overflow: hidden; white-space: nowrap; vertical-align: middle; text-align: center; background-image: none; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); } .my-btn:focus { outline: 2px solid transparent; outline-offset: 2px; } .my-btn:disabled { opacity: 0.5; cursor: not-allowed; } /* Button Variants */ .my-btn-primary { background-color: #3b82f6; color: #ffffff; border-color: #3b82f6; } .my-btn-primary:hover:not(:disabled) { background-color: #2563eb; border-color: #2563eb; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3); } .my-btn-primary:active:not(:disabled) { background-color: #1d4ed8; border-color: #1d4ed8; transform: translateY(0); box-shadow: 0 2px 4px rgba(59, 130, 246, 0.2); } .my-btn-secondary { background-color: #f3f4f6; color: #374151; border-color: #d1d5db; } .my-btn-secondary:hover:not(:disabled) { background-color: #e5e7eb; border-color: #9ca3af; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } .my-btn-secondary:active:not(:disabled) { background-color: #d1d5db; border-color: #6b7280; transform: translateY(0); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .my-btn-outline { background-color: transparent; color: #3b82f6; border-color: #3b82f6; } .my-btn-outline:hover:not(:disabled) { background-color: #3b82f6; color: #ffffff; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3); } .my-btn-outline:active:not(:disabled) { background-color: #2563eb; border-color: #2563eb; transform: translateY(0); box-shadow: 0 2px 4px rgba(59, 130, 246, 0.2); } .my-btn-ghost { background-color: transparent; color: #6b7280; border-color: transparent; } .my-btn-ghost:hover:not(:disabled) { background-color: #f3f4f6; color: #374151; transform: translateY(-1px); } .my-btn-ghost:active:not(:disabled) { background-color: #e5e7eb; color: #1f2937; transform: translateY(0); } .my-btn-success { background-color: #22c55e; color: #ffffff; border-color: #22c55e; } .my-btn-success:hover:not(:disabled) { background-color: #16a34a; border-color: #16a34a; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(34, 197, 94, 0.3); } .my-btn-success:active:not(:disabled) { background-color: #15803d; border-color: #15803d; transform: translateY(0); box-shadow: 0 2px 4px rgba(34, 197, 94, 0.2); } .my-btn-warning { background-color: #f59e0b; color: #ffffff; border-color: #f59e0b; } .my-btn-warning:hover:not(:disabled) { background-color: #d97706; border-color: #d97706; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(245, 158, 11, 0.3); } .my-btn-warning:active:not(:disabled) { background-color: #b45309; border-color: #b45309; transform: translateY(0); box-shadow: 0 2px 4px rgba(245, 158, 11, 0.2); } .my-btn-error { background-color: #ef4444; color: #ffffff; border-color: #ef4444; } .my-btn-error:hover:not(:disabled) { background-color: #dc2626; border-color: #dc2626; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3); } .my-btn-error:active:not(:disabled) { background-color: #b91c1c; border-color: #b91c1c; transform: translateY(0); box-shadow: 0 2px 4px rgba(239, 68, 68, 0.2); } /* Additional Button Variants */ .my-btn-info { background-color: #06b6d4; color: #ffffff; border-color: #06b6d4; } .my-btn-info:hover:not(:disabled) { background-color: #0891b2; border-color: #0891b2; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(6, 182, 212, 0.3); } .my-btn-info:active:not(:disabled) { background-color: #0e7490; border-color: #0e7490; transform: translateY(0); box-shadow: 0 2px 4px rgba(6, 182, 212, 0.2); } .my-btn-purple { background-color: #8b5cf6; color: #ffffff; border-color: #8b5cf6; } .my-btn-purple:hover:not(:disabled) { background-color: #7c3aed; border-color: #7c3aed; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(139, 92, 246, 0.3); } .my-btn-purple:active:not(:disabled) { background-color: #6d28d9; border-color: #6d28d9; transform: translateY(0); box-shadow: 0 2px 4px rgba(139, 92, 246, 0.2); } .my-btn-pink { background-color: #ec4899; color: #ffffff; border-color: #ec4899; } .my-btn-pink:hover:not(:disabled) { background-color: #db2777; border-color: #db2777; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(236, 72, 153, 0.3); } .my-btn-pink:active:not(:disabled) { background-color: #be185d; border-color: #be185d; transform: translateY(0); box-shadow: 0 2px 4px rgba(236, 72, 153, 0.2); } .my-btn-indigo { background-color: #6366f1; color: #ffffff; border-color: #6366f1; } .my-btn-indigo:hover:not(:disabled) { background-color: #4f46e5; border-color: #4f46e5; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3); } .my-btn-indigo:active:not(:disabled) { background-color: #4338ca; border-color: #4338ca; transform: translateY(0); box-shadow: 0 2px 4px rgba(99, 102, 241, 0.2); } .my-btn-teal { background-color: #14b8a6; color: #ffffff; border-color: #14b8a6; } .my-btn-teal:hover:not(:disabled) { background-color: #0d9488; border-color: #0d9488; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(20, 184, 166, 0.3); } .my-btn-teal:active:not(:disabled) { background-color: #0f766e; border-color: #0f766e; transform: translateY(0); box-shadow: 0 2px 4px rgba(20, 184, 166, 0.2); } .my-btn-orange { background-color: #f97316; color: #ffffff; border-color: #f97316; } .my-btn-orange:hover:not(:disabled) { background-color: #ea580c; border-color: #ea580c; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(249, 115, 22, 0.3); } .my-btn-orange:active:not(:disabled) { background-color: #c2410c; border-color: #c2410c; transform: translateY(0); box-shadow: 0 2px 4px rgba(249, 115, 22, 0.2); } .my-btn-rose { background-color: #f43f5e; color: #ffffff; border-color: #f43f5e; } .my-btn-rose:hover:not(:disabled) { background-color: #e11d48; border-color: #e11d48; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(244, 63, 94, 0.3); } .my-btn-rose:active:not(:disabled) { background-color: #be123c; border-color: #be123c; transform: translateY(0); box-shadow: 0 2px 4px rgba(244, 63, 94, 0.2); } .my-btn-slate { background-color: #64748b; color: #ffffff; border-color: #64748b; } .my-btn-slate:hover:not(:disabled) { background-color: #475569; border-color: #475569; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(100, 116, 139, 0.3); } .my-btn-slate:active:not(:disabled) { background-color: #334155; border-color: #334155; transform: translateY(0); box-shadow: 0 2px 4px rgba(100, 116, 139, 0.2); } .my-btn-zinc { background-color: #71717a; color: #ffffff; border-color: #71717a; } .my-btn-zinc:hover:not(:disabled) { background-color: #52525b; border-color: #52525b; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(113, 113, 122, 0.3); } .my-btn-zinc:active:not(:disabled) { background-color: #3f3f46; border-color: #3f3f46; transform: translateY(0); box-shadow: 0 2px 4px rgba(113, 113, 122, 0.2); } .my-btn-stone { background-color: #78716c; color: #ffffff; border-color: #78716c; } .my-btn-stone:hover:not(:disabled) { background-color: #57534e; border-color: #57534e; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(120, 113, 108, 0.3); } .my-btn-stone:active:not(:disabled) { background-color: #44403c; border-color: #44403c; transform: translateY(0); box-shadow: 0 2px 4px rgba(120, 113, 108, 0.2); } .my-btn-neutral { background-color: #737373; color: #ffffff; border-color: #737373; } .my-btn-neutral:hover:not(:disabled) { background-color: #525252; border-color: #525252; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(115, 115, 115, 0.3); } .my-btn-neutral:active:not(:disabled) { background-color: #404040; border-color: #404040; transform: translateY(0); box-shadow: 0 2px 4px rgba(115, 115, 115, 0.2); } /* Button Sizes */ .my-btn-sm { padding: 0.375rem 0.75rem; font-size: 0.75rem; line-height: 1rem; border-radius: 0.25rem; } .my-btn-md { padding: 0.5rem 1rem; font-size: 0.875rem; line-height: 1.25rem; border-radius: 0.375rem; } .my-btn-lg { padding: 0.75rem 1.5rem; font-size: 1rem; line-height: 1.5rem; border-radius: 0.5rem; } .my-btn-xl { padding: 1rem 2rem; font-size: 1.125rem; line-height: 1.75rem; border-radius: 0.5rem; } .my-btn-2xl { padding: 1.25rem 2.5rem; font-size: 1.25rem; line-height: 1.75rem; border-radius: 0.75rem; } .my-btn-xs { padding: 0.25rem 0.5rem; font-size: 0.625rem; line-height: 0.875rem; border-radius: 0.25rem; } .my-btn-xxs { padding: 0.125rem 0.25rem; font-size: 0.5rem; line-height: 0.75rem; border-radius: 0.125rem; } /* Button Shapes */ .my-btn-rounded { border-radius: 9999px; } .my-btn-square { border-radius: 0; } .my-btn-circle { border-radius: 50%; width: 2.5rem; height: 2.5rem; padding: 0; } /* Animated Buttons */ .my-btn-animated { position: relative; overflow: hidden; } .my-btn-animated::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.5s; } .my-btn-animated:hover::before { left: 100%; } .my-btn-loading { position: relative; color: transparent; } .my-btn-loading::after { content: ''; position: absolute; top: 50%; left: 50%; width: 1rem; height: 1rem; margin: -0.5rem 0 0 -0.5rem; border: 2px solid transparent; border-top-color: currentColor; border-radius: 50%; animation: fx-spin 1s linear infinite; } /* Button States */ .my-btn-disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } .my-btn-loading { position: relative; color: transparent; pointer-events: none; } .my-btn-loading::after { content: ''; position: absolute; top: 50%; left: 50%; width: 1rem; height: 1rem; margin: -0.5rem 0 0 -0.5rem; border: 2px solid transparent; border-top-color: currentColor; border-radius: 50%; animation: fx-spin 1s linear infinite; } .my-btn-success-state { background-color: #22c55e; color: #ffffff; border-color: #22c55e; } .my-btn-error-state { background-color: #ef4444; color: #ffffff; border-color: #ef4444; } .my-btn-warning-state { background-color: #f59e0b; color: #ffffff; border-color: #f59e0b; } .my-btn-info-state { background-color: #06b6d4; color: #ffffff; border-color: #06b6d4; } /* Button Effects */ .my-btn-glow { box-shadow: 0 0 20px rgba(59, 130, 246, 0.5); } .my-btn-glow:hover { box-shadow: 0 0 30px rgba(59, 130, 246, 0.7); } .my-btn-glow-success { box-shadow: 0 0 20px rgba(34, 197, 94, 0.5); } .my-btn-glow-success:hover { box-shadow: 0 0 30px rgba(34, 197, 94, 0.7); } .my-btn-glow-error { box-shadow: 0 0 20px rgba(239, 68, 68, 0.5); } .my-btn-glow-error:hover { box-shadow: 0 0 30px rgba(239, 68, 68, 0.7); } .my-btn-glow-warning { box-shadow: 0 0 20px rgba(245, 158, 11, 0.5); } .my-btn-glow-warning:hover { box-shadow: 0 0 30px rgba(245, 158, 11, 0.7); } .my-btn-glow-info { box-shadow: 0 0 20px rgba(6, 182, 212, 0.5); } .my-btn-glow-info:hover { box-shadow: 0 0 30px rgba(6, 182, 212, 0.7); } .my-btn-glow-purple { box-shadow: 0 0 20px rgba(139, 92, 246, 0.5); } .my-btn-glow-purple:hover { box-shadow: 0 0 30px rgba(139, 92, 246, 0.7); } .my-btn-glow-pink { box-shadow: 0 0 20px rgba(236, 72, 153, 0.5); } .my-btn-glow-pink:hover { box-shadow: 0 0 30px rgba(236, 72, 153, 0.7); } .my-btn-glow-indigo { box-shadow: 0 0 20px rgba(99, 102, 241, 0.5); } .my-btn-glow-indigo:hover { box-shadow: 0 0 30px rgba(99, 102, 241, 0.7); } .my-btn-glow-teal { box-shadow: 0 0 20px rgba(20, 184, 166, 0.5); } .my-btn-glow-teal:hover { box-shadow: 0 0 30px rgba(20, 184, 166, 0.7); } .my-btn-glow-orange { box-shadow: 0 0 20px rgba(249, 115, 22, 0.5); } .my-btn-glow-orange:hover { box-shadow: 0 0 30px rgba(249, 115, 22, 0.7); } .my-btn-glow-rose { box-shadow: 0 0 20px rgba(244, 63, 94, 0.5); } .my-btn-glow-rose:hover { box-shadow: 0 0 30px rgba(244, 63, 94, 0.7); } .my-btn-glow-slate { box-shadow: 0 0 20px rgba(100, 116, 139, 0.5); } .my-btn-glow-slate:hover { box-shadow: 0 0 30px rgba(100, 116, 139, 0.7); } .my-btn-glow-zinc { box-shadow: 0 0 20px rgba(113, 113, 122, 0.5); } .my-btn-glow-zinc:hover { box-shadow: 0 0 30px rgba(113, 113, 122, 0.7); } .my-btn-glow-stone { box-shadow: 0 0 20px rgba(120, 113, 108, 0.5); } .my-btn-glow-stone:hover { box-shadow: 0 0 30px rgba(120, 113, 108, 0.7); } .my-btn-glow-neutral { box-shadow: 0 0 20px rgba(115, 115, 115, 0.5); } .my-btn-glow-neutral:hover { box-shadow: 0 0 30px rgba(115, 115, 115, 0.7); } /* Button Groups */ .my-btn-group { display: inline-flex; vertical-align: middle; } .my-btn-group .my-btn { border-radius: 0; border-right-width: 0; } .my-btn-group .my-btn:first-child { border-top-left-radius: 0.375rem; border-bottom-left-radius: 0.375rem; } .my-btn-group .my-btn:last-child { border-top-right-radius: 0.375rem; border-bottom-right-radius: 0.375rem; border-right-width: 1px; } .my-btn-group .my-btn:only-child { border-radius: 0.375rem; border-right-width: 1px; } /* Icon Buttons */ .my-btn-icon { padding: 0.5rem; width: 2.5rem; height: 2.5rem; } .my-btn-icon.my-btn-sm { padding: 0.375rem; width: 2rem; height: 2rem; } .my-btn-icon.my-btn-lg { padding: 0.75rem; width: 3rem; height: 3rem; } /* Floating Action Button */ .my-fab { position: fixed; bottom: 1.5rem; right: 1.5rem; width: 3.5rem; height: 3.5rem; border-radius: 50%; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); z-index: 50; } .my-fab:hover { transform: scale(1.1); box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2); } /* Button Animations */ .my-btn-bounce { animation: fx-bounce 0.5s ease-in-out; } .my-btn-pulse { animation: fx-pulse 2s infinite; } .my-btn-shake { animation: fx-shake 0.5s ease-in-out; } .my-btn-wiggle { animation: fx-wiggle 0.5s ease-in-out; } .my-btn-flip { animation: fx-flip 0.5s ease-in-out; } .my-btn-rotate { animation: fx-rotate 0.5s ease-in-out; } .my-btn-scale { animation: fx-scale 0.5s ease-in-out; } .my-btn-slide { animation: fx-slide 0.5s ease-in-out; } .my-btn-fade { animation: fx-fade 0.5s ease-in-out; } .my-btn-zoom { animation: fx-zoom 0.5s ease-in-out; } .my-btn-elastic { animation: fx-elastic 0.5s ease-in-out; } .my-btn-back { animation: fx-back 0.5s ease-in-out; } .my-btn-bounce-in { animation: fx-bounce-in 0.5s ease-in-out; } .my-btn-bounce-out { animation: fx-bounce-out 0.5s ease-in-out; } .my-btn-flip-in { animation: fx-flip-in 0.5s ease-in-out; } .my-btn-flip-out { animation: fx-flip-out 0.5s ease-in-out; } .my-btn-rotate-in { animation: fx-rotate-in 0.5s ease-in-out; } .my-btn-rotate-out { animation: fx-rotate-out 0.5s ease-in-out; } .my-btn-scale-in { animation: fx-scale-in 0.5s ease-in-out; } .my-btn-scale-out { animation: fx-scale-out 0.5s ease-in-out; } .my-btn-slide-in { animation: fx-slide-in 0.5s ease-in-out; } .my-btn-slide-out { animation: fx-slide-out 0.5s ease-in-out; } .my-btn-fade-in { animation: fx-fade-in 0.5s ease-in-out; } .my-btn-fade-out { animation: fx-fade-out 0.5s ease-in-out; } .my-btn-zoom-in { animation: fx-zoom-in 0.5s ease-in-out; } .my-btn-zoom-out { animation: fx-zoom-out 0.5s ease-in-out; } .my-btn-elastic-in { animation: fx-elastic-in 0.5s ease-in-out; } .my-btn-elastic-out { animation: fx-elastic-out 0.5s ease-in-out; } .my-btn-back-in { animation: fx-back-in 0.5s ease-in-out; } .my-btn-back-out { animation: fx-back-out 0.5s ease-in-out; } /* Button Hover Effects */ .my-btn-hover-bounce:hover { animation: fx-bounce 0.5s ease-in-out; } .my-btn-hover-pulse:hover { animation: fx-pulse 2s infinite; } .my-btn-hover-shake:hover { animation: fx-shake 0.5s ease-in-out; } .my-btn-hover-wiggle:hover { animation: fx-wiggle 0.5s ease-in-out; } .my-btn-hover-flip:hover { animation: fx-flip 0.5s ease-in-out; } .my-btn-hover-rotate:hover { animation: fx-rotate 0.5s ease-in-out; } .my-btn-hover-scale:hover { animation: fx-scale 0.5s ease-in-out; } .my-btn-hover-slide:hover { animation: fx-slide 0.5s ease-in-out; } .my-btn-hover-fade:hover { animation: fx-fade 0.5s ease-in-out; } .my-btn-hover-zoom:hover { animation: fx-zoom 0.5s ease-in-out; } .my-btn-hover-elastic:hover { animation: fx-elastic 0.5s ease-in-out; } .my-btn-hover-back:hover { animation: fx-back 0.5s ease-in-out; } /* Button Focus Effects */ .my-btn-focus-bounce:focus { animation: fx-bounce 0.5s ease-in-out; } .my-btn-focus-pulse:focus { animation: fx-pulse 2s infinite; } .my-btn-focus-shake:focus { animation: fx-shake 0.5s ease-in-out; } .my-btn-focus-wiggle:focus { animation: fx-wiggle 0.5s ease-in-out; } .my-btn-focus-flip:focus { animation: fx-flip 0.5s ease-in-out; } .my-btn-focus-rotate:focus { animation: fx-rotate 0.5s ease-in-out; } .my-btn-focus-scale:focus { animation: fx-scale 0.5s ease-in-out; } .my-btn-focus-slide:focus { animation: fx-slide 0.5s ease-in-out; } .my-btn-focus-fade:focus { animation: fx-fade 0.5s ease-in-out; } .my-btn-focus-zoom:focus { animation: fx-zoom 0.5s ease-in-out; } .my-btn-focus-elastic:focus { animation: fx-elastic 0.5s ease-in-out; } .my-btn-focus-back:focus { animation: fx-back 0.5s ease-in-out; } /* Button Active Effects */ .my-btn-active-bounce:active { animation: fx-bounce 0.5s ease-in-out; } .my-btn-active-pulse:active { animation: fx-pulse 2s infinite; } .my-btn-active-shake:active { animation: fx-shake 0.5s ease-in-out; } .my-btn-active-wiggle:active { animation: fx-wiggle 0.5s ease-in-out; } .my-btn-active-flip:active { animation: fx-flip 0.5s ease-in-out; } .my-btn-active-rotate:active { animation: fx-rotate 0.5s ease-in-out; } .my-btn-active-scale:active { animation: fx-scale 0.5s ease-in-out; } .my-btn-active-slide:active { animation: fx-slide 0.5s ease-in-out; } .my-btn-active-fade:active { animation: fx-fade 0.5s ease-in-out; } .my-btn-active-zoom:active { animation: fx-zoom 0.5s ease-in-out; } .my-btn-active-elastic:active { animation: fx-elastic 0.5s ease-in-out; } .my-btn-active-back:active { animation: fx-back 0.5s ease-in-out; } /* Dark Mode Support */ @media (prefers-color-scheme: dark) { .my-btn-secondary { background-color: #374151; color: #f3f4f6; border-color: #4b5563; } .my-btn-secondary:hover:not(:disabled) { background-color: #4b5563; border-color: #6b7280; } .my-btn-ghost { color: #9ca3af; } .my-btn-ghost:hover:not(:disabled) { background-color: #374151; color: #f3f4f6; } } .dark .my-btn-secondary { background-color: #374151; color: #f3f4f6; border-color: #4b5563; } .dark .my-btn-secondary:hover:not(:disabled) { background-color: #4b5563; border-color: #6b7280; } .dark .my-btn-ghost { color: #9ca3af; } .dark .my-btn-ghost:hover:not(:disabled) { background-color: #374151; color: #f3f4f6; } /* Button Animation Keyframes */ @keyframes fx-bounce { 0%, 20%, 53%, 80%, 100% { transform: translate3d(0, 0, 0); } 40%, 43% { transform: translate3d(0, -30px, 0); } 70% { transform: translate3d(0, -15px, 0); } 90% { transform: translate3d(0, -4px, 0); } } @keyframes fx-pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } @keyframes fx-shake { 0%, 100% { transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { transform: translateX(-10px); } 20%, 40%, 60%, 80% { transform: translateX(10px); } } @keyframes fx-wiggle { 0%, 100% { transform: rotate(0deg); } 25% { transform: rotate(5deg); } 75% { transform: rotate(-5deg); } } @keyframes fx-flip { 0% { transform: perspective(400px) rotateY(0); } 40% { transform: perspective(400px) rotateY(-90deg); } 60% { transform: perspective(400px) rotateY(-90deg); } 100% { transform: perspective(400px) rotateY(0); } } @keyframes fx-rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @keyframes fx-scale { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } @keyframes fx-slide { 0% { transform: translateX(0); } 50% { transform: translateX(10px); } 100% { transform: translateX(0); } } @keyframes fx-fade { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } } @keyframes fx-zoom { 0% { transform: scale(1); } 50% { transform: scale(1.2); } 100% { transform: scale(1); } } @keyframes fx-elastic { 0% { transform: scale(1); } 30% { transform: scale(1.25); } 40% { transform: scale(0.75); } 50% { transform: scale(1.15); } 65% { transform: scale(0.95); } 75% { transform: scale(1.05); } 100% { transform: scale(1); } } @keyframes fx-back { 0% { transform: translateX(0); } 30% { transform: translateX(-10px); } 100% { transform: translateX(0); } } @keyframes fx-bounce-in { 0% { opacity: 0; transform: scale(0.3); } 50% { opacity: 1; transform: scale(1.05); } 70% { transform: scale(0.9); } 100% { opacity: 1; transform: scale(1); } } @keyframes fx-bounce-out { 0% { transform: scale(1); } 25% { transform: scale(0.95); } 50% { opacity: 1; transform: scale(1.1); } 100% { opacity: 0; transform: scale(0.3); } } @keyframes fx-flip-in { 0% { opacity: 0; transform: perspective(400px) rotateY(-90deg); } 100% { opacity: 1; transform: perspective(400px) rotateY(0); } } @keyframes fx-flip-out { 0% { transform: perspective(400px) rotateY(0); } 100% { opacity: 0; transform: perspective(400px) rotateY(90deg); } } @keyframes fx-rotate-in { 0% { opacity: 0; transform: rotate(-200deg); } 100% { opacity: 1; transform: rotate(0); } } @keyframes fx-rotate-out { 0% { transform: rotate(0); } 100% { opacity: 0; transform: rotate(200deg); } } @keyframes fx-scale-in { 0% { opacity: 0; transform: scale(0); } 100% { opacity: 1; transform: scale(1); } } @keyframes fx-scale-out { 0% { transform: scale(1); } 100% { opacity: 0; transform: scale(0); } } @keyframes fx-slide-in { 0% { opacity: 0; transform: translateX(-100%); } 100% { opacity: 1; transform: translateX(0); } } @keyframes fx-slide-out { 0% { transform: translateX(0); } 100% { opacity: 0; transform: translateX(100%); } } @keyframes fx-fade-in { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes fx-fade-out { 0% { opacity: 1; } 100% { opacity: 0; } } @keyframes fx-zoom-in { 0% { opacity: 0; transform: scale(0.3); } 50% { opacity: 1; } 100% { opacity: 1; transform: scale(1); } } @keyframes fx-zoom-out { 0% { opacity: 1; transform: scale(1); } 50% { opacity: 0; } 100% { opacity: 0; transform: scale(0.3); } } @keyframes fx-elastic-in { 0% { opacity: 0; transform: scale(0); } 50% { transform: scale(1.2); } 100% { opacity: 1; transform: scale(1); } } @keyframes fx-elastic-out { 0% { transform: scale(1); } 50% { transform: scale(1.2); } 100% { opacity: 0; transform: scale(0); } } @keyframes fx-back-in { 0% { opacity: 0; transform: translateX(-100px); } 100% { opacity: 1; transform: translateX(0); } } @keyframes fx-back-out { 0% { transform: translateX(0); } 100% { opacity: 0; transform: translateX(100px); } }