DEMO
CODE
<div class="demo-stage"><div class="nc-grid"><div class="nc-item"><div class="nc-val" data-target="2847">0</div><div class="nc-label">USERS</div></div><div class="nc-item"><div class="nc-val" data-target="98">0</div><div class="nc-label">PERCENT</div></div><div class="nc-item"><div class="nc-val" data-target="156">0</div><div class="nc-label">PROJECTS</div></div></div><button class="nc-btn" onclick="startCount()">START COUNT</button></div>
.nc-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1.5rem; padding:2rem; }
.nc-item { text-align:center; }
.nc-val { font-family:'Oswald',sans-serif; font-size:3rem; font-weight:600; color:#E91B89; line-height:1; }
.nc-label { font-family:'Oswald',sans-serif; font-size:.7rem; letter-spacing:.2em; color:#5A5A5A; margin-top:.5rem; }
.nc-btn { display:block; margin:1rem auto; padding:.8rem 2rem; background:#1A1A1A; color:#fff; border:none; font-family:'Oswald',sans-serif; letter-spacing:.2em; cursor:pointer; }
function startCount(){ document.querySelectorAll('.nc-val').forEach(el => { const target = +el.dataset.target; const duration = 1800; const start = performance.now(); function step(now){ const p = Math.min((now - start) / duration, 1); const eased = 1 - Math.pow(1 - p, 3); el.textContent = Math.floor(eased * target); if(p < 1) requestAnimationFrame(step); else el.textContent = target; } requestAnimationFrame(step); }); }
AI PROMPT
数値カウントアップを作って。data-target属性で目標値を指定、duration 1800msでeaseOutCubicイージング適用。requestAnimationFrameで毎フレーム計算、Math.floor()で整数化。スタートボタンクリックで全要素同時カウントアップ。フォントはOswaldで大きく、color:#E91B89。
BOOKS · PR · AMAZON
※当サイトはAmazonアソシエイトプログラムの参加者です。リンクから商品をご購入いただくと、当方に紹介料が発生します。
学びを止めない · AMAZONサブスク
※当サイトはAmazonアソシエイトプログラムの参加者です。リンクから商品をご購入いただくと、当方に紹介料が発生します。
数値を0からカウントアップで表示する効果。実績・統計・ランディングページのインパクト演出に。この効果は主にJavaScriptでDOMを操作し、要素の位置やスタイルを動的に書き換えて実現します。
ヒーローの見出し・キャッチコピー・セクションタイトルなど、視線を集めたいテキストに向く。やりすぎると可読性や操作性を損なうため、目的のある一点に絞って使うのがコツです。
JavaScriptで座標やタイミングを計算しながら要素のstyleを書き換えます。更新はrequestAnimationFrameでブラウザの描画タイミングに同期させ、位置の変更はtransformで行うとレイアウト再計算を避けられて軽くなります。動きを減らす設定(prefers-reduced-motion)の利用者へは演出を控えめにする配慮も大切です。
CSSアニメーションは記述が簡潔で軽く、ブラウザ側で最適化されるため高パフォーマンスですが、操作に応じた複雑な分岐や数値計算は不得意です。一方JavaScriptはイベントに反応して動きを動的に組み立てられる反面、書き方を誤ると処理が重くなりがちです。この効果は見た目はCSS・制御はJavaScriptという役割分担で成り立っています。