更新日:2016年4月2日
通常ウェブページを開いたと同時にコンテンツは全て表示されますが、今回はスクロールして画面内におさまった時点でコンテンツを表示させるjQueryのご紹介です。
企業のランディングページでよく使われている技法です。
画像に対して使われるのが主ですが、テキストに対して使っても勿論問題ありません。
ちなみにこのページにも実装しておりますので、どうぞ下の方までスクロールしてみて下さい。百聞は一見に如かずです。
さて、実際に見て貰った所で、実装方法の解説をしていきますね。
まずCSSで
.contentsin {
transform: translate(0, 60px);
transition: all 600ms;
opacity: 0.2;
}
.contentsin.scrollin {
transform: translate(0, 0);
opacity: 1;
}
と記述します。
.contentsinは、スクロールして画面内におさまるまで待機している状態のCSSです。透明状態で、スクロールされるのを今か今かと待ちかまえています。
.contentsin.scrollinは画面内におさまった時に使用されるCSSです。後述するjQueryの記述の際に使用するもので、透明状態を解除します。
そしてjQueryには
$(function() {
$(window).scroll(function () {
$('.contentsin').each(function() {
var elemPos = $(this).offset().top;
var scroll = $(window).scrollTop();
var windowHeight = $(window).height();
if (scroll > elemPos - windowHeight + 200) {
$(this).addClass('scrollin');
}
});
});
});
と記述します。
あとはスクロールして画面内におさまった時点で表示させたい要素に.contentsinを付与してあげればそれで完成です。
よく分からないって人の為に例を記述しておくと、下記のようにclassを付与させてあげればいいということです。
表示させたい要素に.contentsinを付与しています。
いかがでしたでしょうか?
ちょこっと記述して、classを付与してあげるだけで誰にでも簡単に実装出来ちゃいます!
