CSSをコピペするだけで簡単に実装できる! ディズニーからインスピレーションを得た、美しいローディング
Post on:2023年10月23日
真っ白に輝くドットがくるくる廻りながらブルーの尾を引く、ディズニーからインスピレーションを得て実装されたローディングを紹介します。
HTMLはdiv
要素の一つだけ、あとはCSSをコピペするだけで実装できます。
実際の動作は、デモページでご覧ください。
See the Pen
Disney Style CSS Loader 🤙 by coliss (@coliss)
on CodePen.
実装のポイントは、まずHTMLはdiv
だけの単一要素で実装していること。
1 |
<div class="loader" role="alert" aria-live="assertive"></div> |
ローディングのアニメーションは、CSSのみで実装されています。疑似要素でリングを作成し、それを要素に対してオフセットの白いドットを作成します。白いドットの輝きは疑似要素を使用し、オフセットを-50%
に設定し、blur
フィルターを適用しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
:root { --hue: 210; --size: 100px; --border: 10px; --speed: 1s; --blur: var(--border); } body { background: hsl(var(--hue) 50% 8%); } .loader { width: var(--border); aspect-ratio: 1; background: white; border-radius: 50%; position: absolute; --y: calc((var(--size) * -0.5) + (var(--border) * 0.5)); transform: rotate(0deg) translateY(var(--y)); animation: spin var(--speed) infinite linear; } .loader::before { content: ""; position: absolute; inset: calc(var(--border) * -0.5); border-radius: 50%; background: white; filter: blur(var(--blur)); z-index: -1; } .loader::after { content: ""; width: var(--size); aspect-ratio: 1; position: absolute; top: 0%; left: 50%; translate: -50% 0; background: conic-gradient(white, hsl(var(--hue), 100%, 70%), hsl(var(--hue), 100%, 10%), transparent 65%); border-radius: 50%; mask: radial-gradient( transparent calc(((var(--size) * 0.5) - var(--border)) - 1px), white calc((var(--size) * 0.5) - var(--border))); } @keyframes spin { to { transform: rotate(-360deg) translateY(var(--y)); } } |
元ネタは、下記ポストより。
Here's that @CodePen link! 🚀
Change the --hue custom property to give it a different base color 🤙https://t.co/BaaVQVXa28
— jhey ▲🐻🎈 (@jh3yy) October 16, 2023
sponsors