-
Quantum core UI CSS loader animation
HTML
CSS
JavaScript
Nilesh Mhatre
:root { --bg-dark: #03030d; --neon-cyan: #00f3ff; --neon-magenta: #ff0055; --neon-violet: #8a2be2; --core-size: 260px; } body { margin: 0; height: 100vh; display: flex; justify-content: center; align-items: center; background: var(--bg-dark); overflow: hidden; perspective: 1200px; font-family: system-ui, -apple-system, sans-serif; } /* Ambient background glow that reacts to the interface */ .ambient-glow { position: absolute; width: 600px; height: 600px; top: 50%; left: 50%; transform: translate(-50%, -50%); filter: blur(40px); pointer-events: none; transition: all 0.8s ease; } /* Main Interactive Container */ .quantum-loader { position: relative; width: var(--core-size); height: var(--core-size); transform-style: preserve-3d; cursor: pointer; transform: rotateX(45deg) rotateY(-15deg); transition: transform 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); } /* Interactive Trigger: Dramatic tilt shift on hover */ .quantum-loader:hover { transform: rotateX(65deg) rotateY(0deg) rotateZ(180deg); } /* Ring Structure Styling */ .ring-layer { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: 50%; border: 2px solid transparent; transform-style: preserve-3d; mix-blend-mode: screen; } /* Layer 1: Outer Cyan Tracking Ring */ .ring-layer.outer { border-top-color: var(--neon-cyan); border-bottom-color: var(--neon-cyan); filter: drop-shadow(0 0 10px var(--neon-cyan)); animation: spin-clockwise 4s cubic-bezier(0.4, 0, 0.2, 1) infinite; } /* Layer 2: Inner Magenta Counter-Ring */ .ring-layer.inner { top: 10%; left: 10%; width: 80%; height: 80%; border-left-color: var(--neon-magenta); border-right-color: var(--neon-magenta); filter: drop-shadow(0 0 12px var(--neon-magenta)); animation: spin-counter 2.5s linear infinite; } /* Layer 3: Center Sub-Orbital Ring */ .ring-layer.core-orbit { top: 22%; left: 22%; width: 56%; height: 56%; border: 1px dashed rgba(250, 250, 250, 0.4); border-top-color: var(--neon-violet); filter: drop-shadow(0 0 15px var(--neon-violet)); animation: spin-clockwise 1.5s ease-in-out infinite; } /* Quantum Particles riding the tracks */ .node { position: absolute; width: 12px; height: 12px; background: #fff; border-radius: 50%; top: 50%; left: 0; transform: translateY(-50%); box-shadow: 0 0 15px #fff, 0 0 30px var(--neon-cyan), 0 0 45px var(--neon-cyan); } .ring-layer.inner .node { left: auto; right: 0; box-shadow: 0 0 15px #fff, 0 0 30px var(--neon-magenta), 0 0 45px var(--neon-magenta); } /* Central Glassmorphic Fusion Core */ .fusion-core { position: absolute; top: 35%; left: 35%; width: 30%; height: 30%; background: radial-gradient(circle, rgba(255,255,255,0.9) 0%, rgba(0,243,255,0.4) 40%, transparent 75%); border-radius: 50%; filter: blur(2px); box-shadow: 0 0 40px var(--neon-cyan), inset 0 0 20px #fff; animation: pulse-core 2s ease-in-out infinite alternate; pointer-events: none; transition: all 0.5s ease; } /* INTERACTIVE EFFECTS (Hover States) */ body:has(.quantum-loader:hover) .ambient-glow { filter: blur(60px); } .quantum-loader:hover .outer { animation-duration: 1.5s; border-color: var(--neon-cyan); } .quantum-loader:hover .inner { animation-duration: 0.8s; border-color: var(--neon-magenta); } .quantum-loader:hover .fusion-core { box-shadow: 0 0 60px 20px var(--neon-magenta), 0 0 100px #fff; background: radial-gradient(circle, rgba(255,255,255,1) 0%, rgba(255, 0, 85, 0.6) 50%, transparent 80%); transform: scale(1.3); } /* Status Typography */ .status-text { position: absolute; bottom: -60px; left: 50%; transform: translateX(-50%) rotateX(-45deg); /* Counter-tilts text so it faces camera */ color: rgba(255, 255, 255, 0.4); font-size: 0.75rem; letter-spacing: 0.4em; text-transform: uppercase; white-space: nowrap; transition: all 0.4s ease; text-shadow: 0 0 5px rgba(255,255,255,0.1); } .quantum-loader:hover .status-text { color: var(--neon-cyan); text-shadow: 0 0 10px var(--neon-cyan); letter-spacing: 0.6em; } /* Animation Keyframes */ @keyframes spin-clockwise { 0% { transform: rotateZ(0deg); } 100% { transform: rotateZ(360deg); } } @keyframes spin-counter { 0% { transform: rotateZ(360deg); } 100% { transform: rotateZ(0deg); } } @keyframes pulse-core { 0% { transform: scale(0.9) translateZ(5px); opacity: 0.7; } 100% { transform: scale(1.1) translateZ(15px); opacity: 1; } }
Live Preview