まずはじめに
初心者のため、もしかしたら非常に簡単なことかもしれません。
コードも作成したものの、無駄がある可能性があります。
色々と試してみたものの、どうしても実現出来ませんでした。
どなたかご教授頂けますと幸いです。
実現したいこと
slick.js(https://kenwheeler.github.io/slick/)のスライド上で、
表示されたタイミングでvivus.js(https://maxwellito.github.io/vivus/)を使用した
手書き風アニメーションをスタート、着火させたい。
スライドは全3枚です。
もしくは、slick.jsの場合、表示されているスライドにはclassにslick-activeが
付与されるので、そのclassが追加されたらアニメーションがスタートするような
ものでも構いません。
- アニメーションの表現自体は成功していますが、問題は表示のタイミングです。
- スライド1枚目はsetTimeoutで繰り返し設定をしているので表示はうまくいきますが、
2枚目以降、もしくは表示2回目以降がバラバラになってしまいます。
- あくまで私の予想?なのですが、合計秒数とsetTimeoutの数値が合っていないからでは
ないかと思うのですが、それでもなぜか計算が合いません。
- setIntervalで繰り返すということも考えたのですが、書き方がおかしいのか、
何回も実行してしまい、2回目・3回目とスライドの回数が増えるほど表示が早くなってしまいます。
参考にしたサイト
https://www.webprofessional.jp/how-to-create-the-invisible-pen-effect-in-svg-using-vivus-js/
現在の状況・試したコード
●<path>の設定について
各スライドの**一番初めの<path>にのみ、 data-delay="60"**を追加しています。
なので60ほど遅れてアニメーションがスタートします。
cssの設定に関しては秒数を設定していないので省略致します。
※そもそもにこの60が0.06秒なのか、0.6秒なのか…。
・
●slickの設定はこちら
$('.slide ul').slick({ slidesToShow: 1, autoplay: true, autoplaySpeed: 5000, speed:500, cssEase:'ease-out' });
・
●vivusの設定はこちら
setTimeoutで数秒後に再度着火するようにしていますが、
これがどうしてもズレてしまいます。秒数計算が間違っているだけだとは
思うのですが、スライドとの兼ね合いもあり、なかなかうまくいきません。
※duration: 20の場合、何秒計算になるのでしょうか。合計で20かかる、ということなのか、
1つ1つの<path>が20かかっているということでしょうか。
//スライド1の手書きanimation設定 new Vivus('svg-animation1', { start: 'inViewport', type: 'scenario-sync', duration: 20, forceRender: false, animTimingFunction: Vivus.EASE }, function(anime1){ setTimeout(function(){ anime1.reset().play(); }, 5500); } ); //スライド2の手書きanimation設定 new Vivus('svg-animation2', { start: 'inViewport', type: 'scenario-sync', duration: 20, forceRender: false, animTimingFunction: Vivus.EASE }, function(anime2){ setTimeout(function(){ anime2.reset().play(); }, 5500); } ); //スライド3の手書きanimation設定 new Vivus('svg-animation3', { start: 'inViewport', type: 'scenario-sync', duration: 20, forceRender: false, animTimingFunction: Vivus.EASE }, function(anime3){ setTimeout(function(){ anime3.reset().play(); }, 5500); } );
以上になります。恐らくあと少しのところまで来ているのですが、
あと一歩が足りません。
大変恐縮ですが、解決策をお知りの方、
いらっしゃいましたら少しでも構いません。
解決に近づける助言・ご指導のほどよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー