今回は、フェードインのアニメーションで要素を表示させる方法を紹介します。
JavaScriptを使って実装します。
【JS】フェードインのアニメーションで要素を表示させる方法
完成形はこちら。
下にスクロールしていくと、要素が下からフェードインして表示されます。
※ フェードインのアニメーションに関するコードだけ載せます。
HTML
<section class="items">
<div class="item fade-in">
<div class="item__img">
<img src="./image/1.JPG" alt="">
</div>
<div class="item__text">
<h2>フェードインします</h2>
<p>ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。</p>
</div>
</div>
<div class="item fade-in">
<div class="item__img">
<img src="./image/2.JPG" alt="">
</div>
<div class="item__text">
<h2>フェードインします</h2>
<p>ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。</p>
</div>
</div>
<div class="item fade-in">
<div class="item__img">
<img src="./image/4.JPG" alt="">
</div>
<div class="item__text">
<h2>フェードインします</h2>
<p>ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。</p>
</div>
</div>
</section>
<section class="items">
<div class="item fade-in">
<div class="item__img">
<img src="./image/1.JPG" alt="">
</div>
<div class="item__text">
<h2>フェードインします</h2>
<p>ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。</p>
</div>
</div>
<div class="item fade-in">
<div class="item__img">
<img src="./image/2.JPG" alt="">
</div>
<div class="item__text">
<h2>フェードインします</h2>
<p>ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。</p>
</div>
</div>
<div class="item fade-in">
<div class="item__img">
<img src="./image/4.JPG" alt="">
</div>
<div class="item__text">
<h2>フェードインします</h2>
<p>ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。</p>
</div>
</div>
</section>
<section class="items"> <div class="item fade-in"> <div class="item__img"> <img src="./image/1.JPG" alt=""> </div> <div class="item__text"> <h2>フェードインします</h2> <p>ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。</p> </div> </div> <div class="item fade-in"> <div class="item__img"> <img src="./image/2.JPG" alt=""> </div> <div class="item__text"> <h2>フェードインします</h2> <p>ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。</p> </div> </div> <div class="item fade-in"> <div class="item__img"> <img src="./image/4.JPG" alt=""> </div> <div class="item__text"> <h2>フェードインします</h2> <p>ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。ブラウザに要素が表示されると、フェードインします。</p> </div> </div> </section>
まずは、フェードインさせたい要素に対して「fade-in」クラスをつけます。
CSS
// フェードイン
.fade-in {
opacity: 0;
visibility: hidden;
transform: translateY(50px);
transition: opacity 2s, transform 2s;
}
.fade-in.show {
opacity: 1;
visibility: visible;
transform: translateY(0px);
}
// フェードイン
.fade-in {
opacity: 0;
visibility: hidden;
transform: translateY(50px);
transition: opacity 2s, transform 2s;
}
.fade-in.show {
opacity: 1;
visibility: visible;
transform: translateY(0px);
}
// フェードイン .fade-in { opacity: 0; visibility: hidden; transform: translateY(50px); transition: opacity 2s, transform 2s; } .fade-in.show { opacity: 1; visibility: visible; transform: translateY(0px); }
ブラウザに要素が表示されるまでは非表示にします。
そしてブラウザに要素が表示された時に、下から50pxほどフェードインして表示されるようにします。
JavaScript
// フェードイン
function showElementAnimation() {
var element = document.getElementsByClassName('fade-in');
if (!element) return;
var showTiming = window.innerHeight > 768 ? 200 : 60;
var scrollY = window.pageYOffset;
var windowH = window.innerHeight;
for (var i = 0; i < element.length; i++) {
var elemClientRect = element[i].getBoundingClientRect(); var elemY = scrollY + elemClientRect.top; if (scrollY + windowH - showTiming > elemY) {
element[i].classList.add('show');
} else if (scrollY + windowH < elemY) {
}
}
}
showElementAnimation();
window.addEventListener('scroll', showElementAnimation);
// フェードイン
function showElementAnimation() {
var element = document.getElementsByClassName('fade-in');
if (!element) return;
var showTiming = window.innerHeight > 768 ? 200 : 60;
var scrollY = window.pageYOffset;
var windowH = window.innerHeight;
for (var i = 0; i < element.length; i++) {
var elemClientRect = element[i].getBoundingClientRect(); var elemY = scrollY + elemClientRect.top; if (scrollY + windowH - showTiming > elemY) {
element[i].classList.add('show');
} else if (scrollY + windowH < elemY) {
}
}
}
showElementAnimation();
window.addEventListener('scroll', showElementAnimation);
// フェードイン function showElementAnimation() { var element = document.getElementsByClassName('fade-in'); if (!element) return; var showTiming = window.innerHeight > 768 ? 200 : 60; var scrollY = window.pageYOffset; var windowH = window.innerHeight; for (var i = 0; i < element.length; i++) { var elemClientRect = element[i].getBoundingClientRect(); var elemY = scrollY + elemClientRect.top; if (scrollY + windowH - showTiming > elemY) { element[i].classList.add('show'); } else if (scrollY + windowH < elemY) { } } } showElementAnimation(); window.addEventListener('scroll', showElementAnimation);
ブラウザに要素が表示されるとshowクラスがつき、下からフェードアウトするようにしました。
まとめ
以上が、フェードインのアニメーションで要素を表示させる方法でした。