今回は特定の要素がスクロール領域に入ったらフェードインで表示させる方法を紹介します。
ふわっと表示させるだけでも全体の雰囲気が変わると思います。
目次
HTML
<section id="sample" class="fade_off">
<p>この部分がフェードインします</p>
</section>
フェードインさせたい要素にfade_offクラスをつけます。最初は非表示にしておくので、そのためのクラスです。
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;
}
最初に非表示の状態にしておくのはCSSが行います。opacity: 1;で完全に透過させておきましょう。
.fade_onクラスはjQueryによって付与されるクラスです。このクラスが付与された時にopacityを1に戻し、表示させます。
ふわっとフェードインさせるためにtransitionを指定しておきましょう。
jQuery
先にjQueryを読み込んでしまいましょう。
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
フェードインで表示させるコードは以下になります。
$(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クラスが付与され、フェードインで表示されるようになります。
逆にスクロール領域から出た場合はフェードアウトで非表示になります。フェードアウトさせたくない場合はelse以下の部分を削除してください。