Dots in Circle
Home
Snippets
Dots in Circle
HTML
CSS
JS
<div class="container"></div>
*, *::before, *::after { padding: 0; margin: 0 auto; box-sizing: border-box; } body { font-family: Montserrat, sans-serif; background-color: #000; color: #fff; min-height: 100vh; display: grid; place-items: center; overflow: clip; } .container { position: relative; } .dot { position: absolute; width: 100vmax; height: 10vmax; transform-style: preserve-3d; transform-origin: top left; transform: rotateZ(calc(var(--i) * 6deg)) skewX(84deg); &::after { content: ''; position: absolute; left: -6px; top: -6px; width: 12px; aspect-ratio: 1; background-color: var(--color, #333); border-radius: 50%; transform: skewX(-84deg) rotateZ(3deg) translateX(130px) scale(var(--scale, 1)); transition: all 0.5s; } &:hover::after { --scale: 2; --color: hsl(calc(var(--i) * 6) 100% 50%); transition: none; } &:hover::before { counter-reset: n var(--i); content: counter(n); position: absolute; top: 0; left: 0; font-size: 30px; font-weight: bold; transform-origin: top left; transform: skewX(-84deg) rotateZ(calc(var(--i) * -6deg)) translate(-50%, -50%); } }
const container = document.querySelector('.container'); for (let i = 0; i < 60; i++) { const dot = document.createElement('div'); dot.className = 'dot'; dot.style.setProperty('--i', i); container.appendChild(dot); }
Ad #1
Ad #2
Scroll to Top