今回ご紹介させていただく方法は、特定の要素が可視範囲に入ったタイミングでクラスを付ける(消す)スクリプトを実装し、cssで動きを付ける方法になります。
Jqueryを使用しますので、読み込んでください。
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
特定の要素をしていします。今回は「sample」というIDが付いている要素を例に記載します。
$(function(){
$(window).scroll(function (){
$("#sample").each(function(){
var imgPos = $(this).offset().top;
var scroll = $(window).scrollTop();
var windowHeight = $(window).height();
if (scroll > imgPos - windowHeight + windowHeight/5){
$(this).addClass("fade_on");
} else {
$(this).removeClass("fade_on");
}
});
});
});
このスクリプトを読み込んだ状態でスクロールすると、可視範囲に入ったタイミングで「fade_on」というクラスが付与されるかと思います。(class名は仮ですのでお好きなclass名を指定してください)
次にcssを設定します。
jsで非表示にする設定も出来ますが、今回は分かりやすくなるように、特定の要素は事前にcssで非表示にしておきます。
.fade_off {
opacity: 0;
-webkit-transition: all 1s;
-moz-transition: all 1s;
-o-transition: all 1s;
-ms-transition: all 1s;
transition: all 1s;
}
.fade_on {
opacity: 1;
}
以下HTMLの例です。
<section id="sample" class="fade_off"> <p>この部分が表示非表示します</p> </section>
これで事前にcssで非表示にしていた要素がスクロールで可視範囲に入ったタイミングでフェードインし、また可視範囲から出た場合はフェードアウトします。
スクロールイベントは使用するシーンは比較的多いので覚えておいて損はないでしょう。
