難しいことはできないけど、ちょっとした動きを入れたいなぁ。
そんな時、マウススクロールでふわっと表示させてみてはいかがでしょうか。
ここでは、スクロールした時に要素が順番に表示される方法を紹介します。
まず、jQueryを導入してからお使いください。
↓以下が実際のソースサンプルです。
▼html
<div>
<p>下へスクロールしてください。</p>
</div>
<p>ふわっと左から順番に表示されます</p>
<ul>
<li id="img1"></li>
<li id="img2"></li>
<li id="img3"></li>
<li id="img4"></li>
</ul>
▼css ※一部抜粋しています
body > ul {
/*横並びはflexで指定*/
display: flex;
}
li {
/*デフォルトで透明度0に指定*/
opacity: 0;
transition: 2s;
}
/*スクロールした時に追加されるクラス*/
.fadein{
opacity: 1;
}
▼JavaScript
$(window).scroll(function () {
// クラスを追加するwindowの位置を設定
var scrollTop = $(this).scrollTop();
var scrollBottom = scrollTop + $(this).height();
var effectPos = scrollBottom - 50;
// eachでliを順番に処理
$("li").each(function (i) {
if(effectPos > $(this).offset().top){
var that = this;
// 0.2s毎にずれて表示
setTimeout(function () {
$(that).addClass("fadein");
}, 200 * i);
}
});
});
今回の記事やデモページ作成にあたり
javascriptで順番に並んだ要素を連続して動かすシーケンシャルなアニメーション実装するさんのページを参考にさせていただきました。
ありがとうございます。
