No.015
MICRO CSSJS

Like Burst

いいねアニメーション — CSS+JS · AIプロンプト付き

いいねボタン押下時にハート+パーティクルが飛び散るマイクロインタラクション。SNS・コメント欄に最適。

DEMO

CODE

HTML
<div class="demo-stage"><button class="lb-btn" id="lbBtn"><span class="lb-heart">♥</span><span class="lb-count" id="lbCount">0</span></button></div>
CSS
.lb-btn { position:relative; display:flex; align-items:center; gap:.8rem; padding:1rem 2rem; background:transparent; border:2px solid #E91B89; border-radius:99px; color:#E91B89; font-size:1.5rem; cursor:pointer; transition:all .3s ease; }
.lb-btn.liked { background:#E91B89; color:#fff; }
.lb-heart { transition:transform .3s cubic-bezier(.68,-.55,.27,1.55); }
.lb-btn.liked .lb-heart { transform:scale(1.3); }
.lb-particle { position:absolute; width:10px; height:10px; background:#E91B89; border-radius:50%; pointer-events:none; opacity:0; }
@keyframes burst { 0%{opacity:1;transform:translate(0,0) scale(1)} 100%{opacity:0;transform:translate(var(--tx),var(--ty)) scale(0)} }
.lb-particle.go { animation:burst .8s ease-out forwards; }
JS
let count = 0; const btn = document.getElementById('lbBtn'); const counter = document.getElementById('lbCount');
btn.addEventListener('click', () => { count++; counter.textContent = count; btn.classList.add('liked');
for(let i = 0; i < 8; i++){ const p = document.createElement('span'); p.className = 'lb-particle'; const angle = (Math.PI * 2 / 8) * i; const dist = 50 + Math.random() * 30; p.style.setProperty('--tx', Math.cos(angle) * dist + 'px'); p.style.setProperty('--ty', Math.sin(angle) * dist + 'px'); btn.appendChild(p); requestAnimationFrame(() => p.classList.add('go')); setTimeout(() => p.remove(), 800); } });

AI PROMPT

Claude Cursor v0
PROMPT
いいねボタンに押下時パーティクルバースト。8方向に10pxピンクドットがランダム距離飛んで.8sでフェードアウト。CSS変数--tx/--tyで方向制御、@keyframes burstで0%→100%でtranslate+scale(0)+opacity:0。ハート絵文字はcubic-bezier(.68,-.55,.27,1.55)でscale(1.3)バウンス。

BOOKS · PR · AMAZON

📖 なかしまぁ先生のCSSアニメーション入門 📖 マイクロインタラクション ―UI/UXデザインの神が宿る細部 📖 Fundamentals of Web Animation with GSAP

※当サイトはAmazonアソシエイトプログラムの参加者です。リンクから商品をご購入いただくと、当方に紹介料が発生します。

学びを止めない · AMAZONサブスク

📚 Kindle Unlimited — 技術書・デザイン書が読み放題。30日無料体験 → 🎧 Audible — 移動中に耳で学ぶオーディオブック。30日無料体験 → 📦 Amazon Prime — Prime Reading・配送特典つき。30日無料体験 → 🎵 Music Unlimited — 作業用BGMに。1億曲が聴き放題・30日無料体験 →

※当サイトはAmazonアソシエイトプログラムの参加者です。リンクから商品をご購入いただくと、当方に紹介料が発生します。

いいねアニメーション(Like Burst)とは

いいねボタン押下時にハート+パーティクルが飛び散るマイクロインタラクション。SNS・コメント欄に最適。この効果は見た目をCSSで整えつつ、JavaScriptでクリックやスクロール・マウス移動などの操作を検知して動きを制御します。

使いどころ

フォーム入力・トグル・ボタン・お気に入りなど、小さな操作に対する手応え(マイクロインタラクション)に向く。やりすぎると可読性や操作性を損なうため、目的のある一点に絞って使うのがコツです。

CSS実装のポイント

動きはGPUで処理されやすいtransformとopacityを軸に組み立てると、レイアウトの再計算(リフロー)を避けて滑らかに動きます。width・height・top/leftなど位置やサイズを直接変えるアニメーションは負荷が高いため避けるのが定石です。当サイトのコードはprefers-reduced-motionに対応しており、動きを減らす設定にしている利用者には自動でアニメーションを抑えるよう配慮しています。

CSSとJavaScriptの違い

CSSアニメーションは記述が簡潔で軽く、ブラウザ側で最適化されるため高パフォーマンスですが、操作に応じた複雑な分岐や数値計算は不得意です。一方JavaScriptはイベントに反応して動きを動的に組み立てられる反面、書き方を誤ると処理が重くなりがちです。この効果は見た目はCSS・制御はJavaScriptという役割分担で成り立っています。