ページをスクロールして、可視領域に入ると、蛍光ペンが引かれていく様なアニメーションをご紹介します。
目次
HTML
<span class="marker">
ここに蛍光ペンで引いたような線をつけたいテキストをいれる
</span>
HTMLはclass=”marker”としています。
CSS
.marker.active{
background-position: -100% .7rem;
}
.marker {
background-image: -webkit-linear-gradient(left, transparent 50%, #ffb7ee 50%);
background-image: -moz-linear-gradient(left, transparent 50%, #ffb7ee 50%);
background-image: -ms-linear-gradient(left, transparent 50%, #ffb7ee 50%);
background-image: -o-linear-gradient(left, transparent 50%, #ffb7ee 50%);
background-image: linear-gradient(left, transparent 50%, #ffb7ee 50%);
background-repeat: repeat-x;
background-size: 200% 100%;
background-position: 0 .7rem;
transition: all 2s ease;
}
背景色の高さを変えたい時は、
.marker.activeと、.markerの
background-position: -100% .7rem;の『.7rem』を調整します。
jQuery
$(window).scroll(function (){
$(".marker").each(function(){
var position = $(this).offset().top;
var scroll = $(window).scrollTop();
var windowHeight = $(window).height();
if (scroll > position - windowHeight){
$(this).addClass('active');
}
});
});
可視領域に入ったら、activeを付与します。
offset().topとは、画面上からHTML要素までの縦方向の距離になります。
(今回の場合、.markerとの距離)
offset().leftは、画面左からHTML要素までの横方向の距離になります。
scrollTop()とは、スクロール量を取得します。
offset().topとscrollTop()はフェードインや、ページトップボタンを実装する際にも使うことが多いです。
いろいろと応用出来そうですね。