フェードアニメーション
滑らかなフェードイン/アウト効果で要素をアニメーションします
フェードアニメーション
フェード(Fade)アニメーションは、要素の透明度を調整して滑らかに表示/非表示にする効果を作ります。最も基本的で広く使用されているアニメーションです。
基本的な使い方
import { transition } from '@ssgoi/react';
import { fade } from '@ssgoi/react/transitions';
function Component() {
const [isVisible, setIsVisible] = useState(true);
return (
<div>
{isVisible && (
<div ref={transition({ key: 'fade-element', ...fade() })}>
フェードアニメーションが適用された要素
</div>
)}
</div>
);
}
オプション
interface FadeOptions {
from?: number; // 開始透明度(デフォルト:0)
to?: number; // 終了透明度(デフォルト:1)
spring?: {
stiffness?: number; // スプリング強度(デフォルト:300)
damping?: number; // 減衰係数(デフォルト:30)
};
}
オプション説明
- from: アニメーション開始時の透明度値(0-1)
- to: アニメーション終了時の透明度値(0-1)
- spring: スプリング物理設定
stiffness
: 値が大きいほど速いアニメーションdamping
: 値が大きいほど滑らかなアニメーション
使用例
部分フェード
半透明から始まり、やや透明な状態で終わるフェード:
const partialFade = fade({
from: 0.2, // 20%の透明度から開始
to: 0.8, // 80%の透明度で終了
spring: { stiffness: 300, damping: 30 }
});
<div ref={transition({ key: 'partial-fade', ...partialFade })}>
部分フェード効果
</div>
ゆっくりフェード
ゆっくりと滑らかに表示される効果:
const slowFade = fade({
spring: {
stiffness: 100, // 低い強度
damping: 20 // 低い減衰
}
});
<div ref={transition({ key: 'slow-fade', ...slowFade })}>
ゆっくりフェード効果
</div>
高速フェード
素早く表示される効果:
const fastFade = fade({
spring: {
stiffness: 500, // 高い強度
damping: 40 // 高い減衰
}
});
<div ref={transition({ key: 'fast-fade', ...fastFade })}>
高速フェード効果
</div>
他のアニメーションとの組み合わせ
フェードは他のアニメーションと組み合わせることで、より豊かな効果を作ることができます:
// カスタム組み合わせアニメーション
const fadeAndScale = {
in: (element) => ({
spring: { stiffness: 300, damping: 30 },
tick: (progress) => {
element.style.opacity = progress.toString();
element.style.transform = `scale(${0.8 + progress * 0.2})`;
}
}),
out: (element) => ({
spring: { stiffness: 300, damping: 30 },
tick: (progress) => {
element.style.opacity = progress.toString();
element.style.transform = `scale(${0.8 + progress * 0.2})`;
}
})
};
パフォーマンスに関する考慮事項
- フェードはGPUアクセラレーションを活用し、優れたパフォーマンスを発揮します
opacity
の変更はリフローを発生させないため効率的です- 多くの要素に同時に適用しても滑らかなアニメーションを維持します
アクセシビリティ
フェードアニメーション使用時はアクセシビリティを考慮してください:
<div
ref={transition({ key: 'accessible-fade', ...fade() })}
role="status"
aria-live="polite"
>
スクリーンリーダーに通知されるフェード要素
</div>
推奨される使用例
- 通知メッセージ: ユーザーへのフィードバック提供時
- モーダル/ポップアップ: オーバーレイの表示/非表示
- 画像ギャラリー: 画像の切り替え効果
- ローディング状態: コンテンツの読み込み表示
- ツールチップ: ホバー時の情報表示