前提・実現したいこと
表題のとおりになります。
とある要素が可視範囲に入ったら、別の要素のアニメーションが見えるようにしたいです。
実験中なのですが、いろんなサイトを真似させていただきましたがJSの知識不足で滞っております。。
該当のソースコード
HTML
1<!DOCTYPE html> 2<html lang="ja" class="no-js"> 3<meta charset="UTF-8" /> 4<title>デモ</title> 5<link rel="stylesheet" href="/css/style.css"> 6 7<body class="fadeout"> 8 <div id="circleanime" class="circle"></div> 9 10 <div class="content">ここは見えない</div> 11 12 <div class="last">ここが見えたら発火</div> 13<script src="/js/index.js"></script> 14</body> 15 16</html>
CSS
1.content{ 2 height: 100vh; 3 background-color: antiquewhite; 4} 5 6.last{ 7 height: 50vh; 8 background-color: aquamarine; 9} 10 11.circle { 12 content: ''; 13 position: fixed; 14 right: 10%; 15 top: 10%; 16 border: 1px solid #333; 17 width: 4vw; 18 height: 4vw; 19 border-radius: 50%; 20 opacity: 0; 21 -webkit-animation: 1.5s circleanime infinite; 22 animation: 1.5s circleanime infinite; 23} 24@-webkit-keyframes circleanime { 25 0% { 26 -webkit-transform: scale(0); 27 transform: scale(0); 28 } 29 100% { 30 -webkit-transform: scale(2); 31 transform: scale(2); 32 opacity: 0; 33 } 34} 35 36@keyframes circleanime { 37 0% { 38 -webkit-transform: scale(0); 39 transform: scale(0); 40 } 41 100% { 42 -webkit-transform: scale(2); 43 transform: scale(2); 44 opacity: 0; 最初は見えない 45 } 46} 47 48.circle_on{ 49 opacity: 1; 50} 51
JS
1$(function(){ 2 $(window).scroll(function (){ 3 $("last").each(function(){ 4 var imgPos = $(this).offset().top; 5 var scroll = $(window).scrollTop(); 6 var windowHeight = $(window).height(); 7 if (scroll > imgPos - windowHeight + windowHeight/5){ 8 $(this).addClass("circle_on"); 9 } else { 10 $(this).removeClass("circle_on"); 11 } 12 }); 13 }); 14});
試したこと
・最初は単純に、スクロール量をある程度取得したら~のパターンでやったのですが、
実際のcodeでは、これが文中のモーダルウィンドウの中身にあたり、高さを取得することが出来ず断念しました。
しかも↑これが文中に何度も出てくるので、高さを指定することが出来ません。
・ならばと思って、この.lastが可視範囲に入ったら、発火という感じでいけないのかな?と思い実験しているところです。
モーダルウィンドウの中で出来ることは限られてるのかなとも思っているのですが、
なかなか私の状況に似た記事を見つけることができませんでした。
難しいでしょうか。
・ローカル環境で開発中
・VScode
・Windows
を使っています。
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/16 04:34