今回は前回やった下から上に動かすアニメーションを今度は特定の位置までスクロールしたらアニメーションが開始されるようにします。
特定の位置までスクロールしたらアニメーションを開始する
html
<div class="box">
	<div class="bg"><p></p></div>
</div>css
.box{
	width: 100%;
	height: 500px;
	position: relative;
	background: #fff;
}
.bg{
	position: absolute;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 500px;
}
.bg p{
	position: relative;
	width: 100%;
	height: 500px;
}
.bg p:after{
    content: '';
    width: 100%;
    height: 500px;
    position: absolute;
    left: 0;
    bottom: 0;
}
.bg.bg_on p:after{
    background: #A4C6FF;
    animation-name: bganime;
    animation-duration: 1.5s;
    animation-timing-function: linear;
    animation-iteration-count: 1;
}
@keyframes bganime {
   0%  { height: 0;}
  50%  { height: 250px;}
  100% { height: 500px;}
}
@-webkit-keyframes bganime {
   0%  { height: 0;}
  50%  { height: 250px;}
  100% { height: 500px;}
}
js
特定の位置までスクロールしたら要素にクラス「bg_on」を追加してアニメーションを開始します。
jQuery(window).scroll(function() {
	var bgTop = jQuery('.bg').offset().top;
	console.log('要素の上からの位置: ' + bgTop);
	var bgh = jQuery('.bg').height();
	console.log('要素の高さ: ' + bgh);
	var bghbt = bgTop + bgh;
	console.log('要素の下からの位置: ' + bghbt);
	var wTop = jQuery(window).scrollTop();
	console.log('スクロール位置: ' + wTop);
	var wh = jQuery(window).height();
	console.log('表示領域の高さ: ' + wh);
	var wbt = wTop + wh;
	console.log('表示領域の下からの位置: ' + wbt);
	if(bghbt <= wbt){
		jQuery('.bg').addClass('bg_on');
	}
}); 
  
  
  
  

コメント