【JavaScript】スクロールで要素をふわっと表示させる方法

JavaScript

こんにちは!

JavaScriptを使って要素をふわっと表示させるには、Intersection Observer APIというものを使うのが一般的です。

ただ、見てみたら割ととっつきにくかったので、便利そうなライブラリ見つけてきました。

今回はScrollRevealというスクロールライブラリを使って、スクロールした際に要素をふわっと表示させる方法をご紹介します。

完成デモ

ソースコード

まずはHTMLとCSSでふわっとさせる要素を作ります。

以下はHTMLです。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>FadeIn Site</title>
</head>
<body>
    <div class="space"></div>
    <div class="fadein">
        <img src="fadein.jpg" class="hidden" alt="">
        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Enim repellendus aliquam hic voluptatibus. Vel architecto perspiciatis earum reiciendis ad harum, quaerat nulla dicta dolor? Nemo deserunt a earum voluptates voluptate?
        </p>
    </div>
    <div class="space"></div>
    <script src="https://unpkg.com/scrollreveal"></script>
    <script src="script.js"></script>
</body>
</html>

次はCSSです。

body {
    margin: 0;
    padding: 0;
}
.fadein {
    display: flex;
    justify-content: space-around;
    background: lightgray;
    padding: 50px;
}
.fadein img {
    max-width: 40%;
    border-radius: 10px;
}
.fadein p {
    max-width: 50%;
}
.space {
    height: 1500px;
}

最後に、JavaScriptでふわっとさせます。

let options = {
    distance: '120%',
    origin: 'bottom',
    delay: 375,
    duration: 1000,
    reset: true
}
ScrollReveal().reveal('.fadein img', options);

なんとたったのこれだけです。

素晴らしい👏

使い方

今回使用したライブラリの公式サイトは以下にあります。

ScrollReveal

まず、ライブラリをインストールする必要がありますが、以下の一文のみです。

<script src="https://unpkg.com/scrollreveal"></script>

次に、JavaScriptでふわっとさせたい要素を指定して、決められた関数を実行します。

ScrollReveal().reveal('.fadein img');

基本はこれだけです。

ただし、デフォルトでは要素がその場でゆっくりと現れる挙動になります。

要素が下から現れる、上から現れる、などしたい場合は第二引数にオプションを指定します。

let options = {
    distance: '120%',
    origin: 'bottom',
    delay: 375,
    duration: 1000,
    reset: true
}
ScrollReveal().reveal('.fadein img', options);

こちらのコードの場合は以下のような意味になります。

  • distance・・・移動する距離
  • origin・・・要素の元の場所
  • delay・・・アニメーションをどれだけ遅らせるか
  • duration・・・どれだけゆっくりアニメーションするか
  • reset・・・trueにすると、1回だけではなく何回でもアニメーションする

他にも色々オプションがあると思います。気になった方は公式ドキュメントを読んでみましょう。

コメント

タイトルとURLをコピーしました