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

JavaScript

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

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>

まずは、フェードインさせたい要素に対して「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);
}

ブラウザに要素が表示されるまでは非表示にします。

そしてブラウザに要素が表示された時に、下から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);

ブラウザに要素が表示されるとshowクラスがつき、下からフェードアウトするようにしました。

まとめ

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