こんにちは!
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);
なんとたったのこれだけです。
素晴らしい👏
使い方
今回使用したライブラリの公式サイトは以下にあります。
まず、ライブラリをインストールする必要がありますが、以下の一文のみです。
<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回だけではなく何回でもアニメーションする
他にも色々オプションがあると思います。気になった方は公式ドキュメントを読んでみましょう。
コメント