前提・実現したいこと
vegasという全画面スライダーを100vhにしてコンテンツ全体に設定しているのですが、その中でscrollの値をとって指定の効果をつけたいです。
発生している問題
スクロールをしても値が0になり効果がつけられない
該当のソースコード
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4(略) 5<link rel="stylesheet" href="css/vegas.css"> 6</head> 7 8<body> 9 <main> 10 <header> 11 (略) 12 </header> 13 <div id="vegas"> 14 (略)ここにコンテンツ 15 </div> 16 </main> 17 18 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script> 19 <script src="../js/vegas.min.js"></script> 20 <script> 21 $(function() { 22 $('#vegas').vegas({ 23 slides: [ 24 { src: '../img/slide/01.jpg' }, 25 { src: '../img/slide/02.jpg' }, 26 { src: '../img/slide/03.jpg' }, 27 ], 28 loop:'true', 29 overlay: '../js/overlays/06.png', 30 transition: 'fade', 31 transitionDuration: 2000, 32 delay: 5000, 33 animation: 'fade', 34 animationDuration: 20000, 35 }); 36 }); 37 </script> 38 39 <script> 40 // .onActive animation 41 $(window).on("load scroll resize", function(){ 42 $(".onActive").each(function(){ 43 var imgPos = $(this).offset().top; 44 var scroll = $(window).scrollTop(); 45 var windowHeight = $(window).height(); 46 console.log(scroll); 47 if (scroll > imgPos - windowHeight + windowHeight/5){ 48 $(this).addClass('active'); 49 } else { 50 $(this).removeClass('active'); 51 } 52 }); 53 }); 54 </script> 55</body> 56</html>
css
1#vegas { 2 position: relative; 3 width: 100%; 4 height: 100vh; 5}
#vegas
の100vhを非表示にすると動作しますが、重くなるうえに余計なスクロールバーが表示されてしまいます。
console.log
で出力したscrollの値がゼロになります。
#vegas
の中でスクロールの値を算出したいです。
初歩的な質問で恐縮ですがご教授いただけますと嬉しいです。
どうぞよろしくお願いいたします。
あなたの回答
tips
プレビュー