スクロール
Anime.js

Anime Stagger Scroll Cards

スクロールで画面内に入ったカードがanime.jsでスタガー表示される。

HTML
<div class="assc-wrap">
  <div style="height:60vh;"></div>
  <div class="assc-grid" id="assc-grid">
    <div class="assc-card">Card A</div>
    <div class="assc-card">Card B</div>
    <div class="assc-card">Card C</div>
    <div class="assc-card">Card D</div>
    <div class="assc-card">Card E</div>
    <div class="assc-card">Card F</div>
  </div>
  <div style="height:60vh;"></div>
</div>
CSS
body { padding: 0 !important; }
.assc-wrap { width: 100%; }
.assc-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  max-width: 480px;
  margin: 0 auto;
}
.assc-card {
  padding: 32px 16px;
  background: #1e293b;
  border-radius: 12px;
  color: #e2e8f0;
  text-align: center;
  font-weight: 600;
  opacity: 0;
  transform: translateY(30px);
}
JavaScript
let triggered = false;
const grid = document.getElementById('assc-grid');
function check() {
  if (triggered) return;
  const rect = grid.getBoundingClientRect();
  if (rect.top < window.innerHeight * 0.85) {
    triggered = true;
    anime({
      targets: '.assc-card',
      opacity: [0, 1],
      translateY: [30, 0],
      delay: anime.stagger(100),
      duration: 600,
      easing: 'easeOutCubic'
    });
  }
}
window.addEventListener('scroll', check);
check();