Webページにおいて、画像や文字を画面の横からフェードインさせるエフェクトは、訪問者にインパクトを与え、注目を集める効果的な方法です。この記事では、CSSのアニメーションとJavaScriptを用いて、このフェードインエフェクトを実装する方法を紹介します。
HTML
まず、フェードインさせたい要素をHTMLに追加します。以下はその例です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>フェードイン</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="fade-in-element">
<img src="path/to/your/image.jpg" alt="フェードイン画像">
<p>フェードインする文字</p>
</div>
<script src="script.js"></script>
</body>
</html>
CSSの準備
次に、CSSで初期状態とアニメーションを定義します。
/* styles.css */
.fade-in-element {
opacity: 0;
transform: translateX(-100%);
transition: opacity 1s ease-out, transform 1s ease-out;
}
.fade-in-element.fade-in {
opacity: 1;
transform: translateX(0);
}
JavaScript
最後に、JavaScriptでスクロールに応じてクラスを追加するスクリプトを記述します。
// script.js
document.addEventListener('DOMContentLoaded', function() {
const fadeInElements = document.querySelectorAll('.fade-in-element');
function checkVisibility() {
fadeInElements.forEach(function(element) {
const rect = element.getBoundingClientRect();
if (rect.top < window.innerHeight && rect.bottom > 0) {
element.classList.add('fade-in');
}
});
}
window.addEventListener('scroll', checkVisibility);
checkVisibility();
});
サンプル
フェードインする文字
解説
まず、HTMLでは、.fade-in-elementクラスを持つ要素を追加し、この要素がフェードインの対象となります。
次に、CSSでは、.fade-in-elementクラスの初期状態を非表示(opacity: 0)にし、画面の左外(translateX(-100%))に位置させます。そして、.fade-in-element.fade-inクラスが追加されると、要素は表示され(opacity: 1)、元の位置に戻ります(translateX(0))。
最後に、JavaScriptでは、ページが読み込まれた時に.fade-in-elementクラスを持つ要素を全て取得し、スクロールイベントが発生するたびにcheckVisibility関数を呼び出して、要素がビューポート内にあるかどうかをチェックします。ビューポート内にある要素に対してfade-inクラスを追加し、フェードインアニメーションを開始します。
まとめ
この方法を用いることで、画像や文字を画面の横から自然にフェードインさせることができます。CSSとJavaScriptを組み合わせることで、シンプルながら効果的なアニメーションを実現できます。是非、自分のプロジェクトで試してみてください。