【JS】フェードインのアニメーションで要素を表示させる方法

JavaScript

今回は、フェードインのアニメーションで要素を表示させる方法を紹介します。

JavaScriptを使って実装します。

【JS】フェードインのアニメーションで要素を表示させる方法

完成形はこちら

下にスクロールしていくと、要素が下からフェードインして表示されます。

※ フェードインのアニメーションに関するコードだけ載せます。

HTML

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// フェードイン
.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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// フェードイン
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クラスがつき、下からフェードアウトするようにしました。

まとめ

以上が、フェードインのアニメーションで要素を表示させる方法でした。