How to Implement Animations with Claude Code
Learn how to implement animations using Claude Code. Includes practical code examples and step-by-step guidance.
アニメーション実装をClaude Codeで効率化する
Webアニメーションは体験を大きく向上させますが、実装には専門知識が必要です。Claude Codeなら「フェードインさせたい」「スクロールで要素を表示したい」と伝えるだけで、適切なアニメーションコードを生成できます。
CSSアニメーションの基本
まずはCSSだけで実現できるアニメーションです。
> スクロールで画面に入ったらフェードインするCSSアニメーションを作って。
> 下からスライドしながら表示するパターンも。
/* フェードイン + スライドアップ */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes fadeInLeft {
from {
opacity: 0;
transform: translateX(-20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
.animate-fade-in-up {
animation: fadeInUp 0.6s ease-out forwards;
}
.animate-fade-in-left {
animation: fadeInLeft 0.6s ease-out forwards;
}
/* 初期状態は非表示 */
.animate-on-scroll {
opacity: 0;
}
.animate-on-scroll.is-visible {
animation: fadeInUp 0.6s ease-out forwards;
}
/* スタガー(遅延)アニメーション */
.stagger-1 { animation-delay: 0.1s; }
.stagger-2 { animation-delay: 0.2s; }
.stagger-3 { animation-delay: 0.3s; }
.stagger-4 { animation-delay: 0.4s; }
Intersection Observerと組み合わせます。
function setupScrollAnimations() {
const observer = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
entry.target.classList.add("is-visible");
observer.unobserve(entry.target);
}
});
},
{ threshold: 0.1, rootMargin: "0px 0px -50px 0px" }
);
document.querySelectorAll(".animate-on-scroll").forEach((el) => {
observer.observe(el);
});
}
document.addEventListener("DOMContentLoaded", setupScrollAnimations);
Framer Motionによるアニメーション
Reactプロジェクトでは、Framer Motionを使うとより宣言的に書けます。
import { motion, useInView, type Variants } from "framer-motion";
import { useRef } from "react";
const containerVariants: Variants = {
hidden: { opacity: 0 },
visible: {
opacity: 1,
transition: {
staggerChildren: 0.1,
},
},
};
const itemVariants: Variants = {
hidden: { opacity: 0, y: 20 },
visible: {
opacity: 1,
y: 0,
transition: { duration: 0.5, ease: "easeOut" },
},
};
export function AnimatedList({ items }: { items: string[] }) {
const ref = useRef(null);
const isInView = useInView(ref, { once: true, margin: "-50px" });
return (
<motion.ul
ref={ref}
variants={containerVariants}
initial="hidden"
animate={isInView ? "visible" : "hidden"}
className="space-y-4"
>
{items.map((item, i) => (
<motion.li key={i} variants={itemVariants} className="p-4 bg-white rounded-lg shadow">
{item}
</motion.li>
))}
</motion.ul>
);
}
ページトランジション
ページ遷移時のアニメーションです。
import { motion, AnimatePresence } from "framer-motion";
import { useRouter } from "next/router";
const pageVariants: Variants = {
initial: { opacity: 0, x: -20 },
animate: { opacity: 1, x: 0 },
exit: { opacity: 0, x: 20 },
};
export function PageTransition({ children }: { children: React.ReactNode }) {
const router = useRouter();
return (
<AnimatePresence mode="wait">
<motion.div
key={router.pathname}
variants={pageVariants}
initial="initial"
animate="animate"
exit="exit"
transition={{ duration: 0.3, ease: "easeInOut" }}
>
{children}
</motion.div>
</AnimatePresence>
);
}
ローディングアニメーション
export function SkeletonLoader({ lines = 3 }: { lines?: number }) {
return (
<div className="space-y-3 animate-pulse">
{Array.from({ length: lines }).map((_, i) => (
<div
key={i}
className="h-4 bg-gray-200 rounded"
style={{ width: `${100 - i * 15}%` }}
/>
))}
</div>
);
}
export function SpinnerLoader({ size = "md" }: { size?: "sm" | "md" | "lg" }) {
const sizeClasses = { sm: "h-4 w-4", md: "h-8 w-8", lg: "h-12 w-12" };
return (
<div className={`${sizeClasses[size]} animate-spin rounded-full border-2 border-gray-300 border-t-primary-600`} />
);
}
デザインシステムとの統合はデザインシステム構築を、レスポンシブ対応はレスポンシブデザインをご覧ください。
Summary
Claude Codeを使えば、CSSアニメーション、Framer Motion、ページトランジション、ローディング表示まで、アニメーション実装を短時間で完了できます。「こんな動きをつけたい」と伝えるだけで適切な技術選定とコード生成が行われます。
詳しくはClaude Code公式ドキュメントを参照してください。
Related Posts
10 Tips to Triple Your Productivity with Claude Code
Learn about 10 tips to triple your productivity using Claude Code. Practical tips and code examples included.
Canvas/WebGL Optimization with Claude Code
Learn about canvas/webgl optimization using Claude Code. Practical tips and code examples included.
Markdown Implementation with Claude Code
Learn about markdown implementation using Claude Code. Practical tips and code examples included.