### 実現したいこと
こちらのページで紹介されている方法を用いて、6コマ程度のパラパラ漫画のようなアニメーションを実装したいです。
挙動の希望としては、1コマ目で静止している状態から、
可視領域に入った1秒後に2コマ目→3コマ目→4コマ目→5コマ目→6コマ目と切り替わり、6コマ目で静止するイメージです。
発生している問題・分からないこと
自分なりに色々と模索しましたが、初心者のためうまく動かず困っております。
そもそも違いアニメーションの書き方の方が良いのでしょうか?
どなたかご教授いただけますと幸いです。
該当のソースコード
<style> /* スペースのためのCSS */ .space { width: 100%; height: 100vh; background: #eee; } /* 以下アニメーション周り */ .sprite { width: 126px; height: 100px; margin: 100px auto; background: url(https://liginc.co.jp/wp-content/uploads/2014/12/sprite.png) no-repeat 0 0; } .css .sprite { -webkit-animation: play 1s steps(6) infinite; animation: play 1s steps(6) infinite; } @-webkit-keyframes play { 0% { background-position: 0px 0; } 100% { background-position: -756px 0; } } @keyframes play { 0% { background-position: 0px 0; } 100% { background-position: -756px 0; } } /* 以下発火周り */ .anime { } .anime.ac { } </style> <body> <section class="section css"> <div class="space"></div> <div class="sprite anime"></div> </section> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script> $(function(){ function inview(className,root_margin,callback){ var nodelist = document.querySelectorAll(className); var node = Array.prototype.slice.call(nodelist, 0).reverse(); var options = { root: null, rootMargin: root_margin, threshold: 0 } var observer = new IntersectionObserver(callback, options); node.forEach(function(obj){ observer.observe(obj); }) } inview('.anime','-10% 0px',function(entries, observer){ entries.forEach(function(entry){ if(entry.isIntersecting){ $(entry.target).addClass("ac"); } }); }); }); </script>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
発火の制御は以下の箇所に記述するのかと思うのですが、勉強不足のため上手くできません。
.anime { } .anime.ac { }
補足
・パラパラ漫画のような表現ができれば、こちらのページで紹介されている方法でなくても問題ありません。
・可視領域に入った際、1秒後くらいに一度だけ実行させたいです。
・設置する箇所は、ページのフッター部分を想定しております。

回答2件
あなたの回答
tips
プレビュー