GreenSockでAlligator.ioSVGロゴを描く
この記事を最大限に活用するには、JavaScriptをしっかりと理解していることが重要です。 この記事では、GreenSockの理解にのみ焦点を当てます。そのため、これまでJavaScriptを使用したことがない場合は、学習して戻ってきてください。
Greensockとは何ですか?
GreenSock はJavaScriptアニメーションライブラリであり、特にクロスブラウザ機能に関して、アニメーションを作成する際の多くの苦痛を軽減します。 GreenSockはGSAP(GreenSock Animation Platform)とも呼ばれ、両方を同じ意味で使用します。 GSAPは基本的に、CSSプロパティからSVG属性に至るまで、スローするすべてのプロパティをアニメーション化できます。
GSAPには、次のような複数のツールを使用できます。
- TweenLite は、その名前が示すように、軽量バージョンです。
- TweenMaxこれはGSAPのすべてのパワーが満載です
- TimelineLite& TimelineMax are sequencing tools which helps manage the timing of our animations
GSAPは、npm
モジュールとしてインストールできます。
$ npm install gsap
または、スクリプトタグを介してロードします。
<script src="<https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js>"></script>
GreenSockの基本
GreenSockをデモンストレーションするために、Codepenを使用します。 GreenSockがすでに設定されているここでペンをフォークできます。
基本から始めて、GSAPのto
メソッドを使用して、画面全体に赤い正方形をアニメーション化してみましょう。 次のように赤い正方形を作成します。
<style> #element { height: 150px; width: 150px; background: red; } </style> <div id="element"></div>
これをアニメーション化するために、3
引数をto
メソッドに渡します。引数は次のとおりです。
.to(elToAnimate, duration, propToAnimate)
したがって、この場合、アニメーション化する要素は#element
であり、継続時間は1
秒です。正方形を移動したいので、最後の引数はx
をターゲットとするオブジェクトです。財産。 私たちのコードは次のとおりです。
TweenMax.to("#element", 1, { x: 100 })
これにより、次のようになります。
gifについて心配する必要はありません。Codepenで見られるように、実際の生活でははるかにスムーズです。
今、正方形を回転させたいとしましょう。必要なのは次のことだけです。
TweenMax.to("#element", 3, { rotation: 360 });
オブジェクトにrepeat:-1
を追加することで、このrotation
を無限にすることができます。 yoyo
プロパティを追加して、アニメーションを逆方向と順方向に切り替えることもできます。
fromTo
メソッドを使用して別の位置から開始できます。 これはto
メソッドに似ていますが、アニメーションを開始する場所の追加オブジェクトを指定できます。 正方形をx:300
で開始したい場合は、これを3番目の引数としてfromTo
に渡します。
コード的には、これは次のようになります。
TweenMax.fromTo("#element", 3, {x: 300}, { x: 100 });
視覚的に:
正方形の位置を変更するだけでなく、不透明度などをターゲットにすることもできます。
TweenMax.fromTo("#element", 5, {opacity: 0}, { opacity: 1 });
ここでも、fromTo
メソッドを使用して、opacity
を0
で開始し、1
で終了します。
正直に言うと、上記は非常に退屈なので、あなたは今、信じられないほど刺激を受けていないと確信しています。 もっと面白いことをしましょう。Alligator.io
のロゴを使用して、クールなことをします。
Alligator.ioSVGロゴアニメーション
ウェブサイトからAlligator.io
のロゴを盗みました。Sebが気にしないことを願っています。 これがSVGを内蔵したスターターペンです。
したがって、このアニメーションの目標は、ロゴをdraw
し、緑色にフェードインすることです。
最初に行う必要があるのは、グラフィックにstroke-dasharray
とstroke-dashoffset
を設定することです。 これらは、描画効果をシミュレートするために使用する属性です。これらのプロパティの詳細については、ここを参照してください。
CSSでは、次のように設定します。
#alligator path { stroke-dasharray: 600; stroke-dashoffset: 600; fill-opacity: 0; // we will animate the fill in }
これで、ワニは姿を消しました。 TweenMax
を使用してアニメートしてみましょう。
上記で使用したto
メソッドを使用してから、stroke-dashoffset
を0
に設定します。
TweenMax.to("#alligator path", 15, { "stroke-dashoffset": 0 })
CSS #alligator path
で使用したものと同じセレクターを使用し、期間を0
に設定してから、stroke-dashoffset
を0
に設定します。 これは本当にクールな描画効果をもたらします:
なんてクールなの? ✨
次に行う必要があるのは、色を元に戻すことです。 これを行うには、オブジェクトにプロパティを追加します。
TweenMax.to("#alligator path", 15, { "stroke-dashoffset": 0, "fill-opacity": 1 })
現在の問題は、期間が非常に長く、fill-opacity
プロパティでは少し奇妙に見えることです。 理想的には、最初に描画し、それが終了したらグラフィックを入力します。 これを実現するための古い方法は、2つの別々のアニメーションを作成し、2番目のアニメーションの遅延を最初のアニメーションの継続時間と一致させることでした。 GreenSockは、これを実現する優れたTimelineMax
を提供してくれます。
TimelineMax
最初に行う必要があるのは、次のようにTimelineMax
クラスのインスタンスを作成することです。
const tl = new TimelineMax()
次に、インスタンスでto
メソッドを呼び出し、描画効果を渡します。
tl.to("#alligator path", 10, { "stroke-dashoffset": 0 })
次に、to
メソッドを再度呼び出しますが、今回はfill-opacity
に対して次のようにします。
tl.to("#alligator path", 5, { "fill-opacity": 1 })
これで、次のようになります。
TimelineMax
は非常に強力で、これは表面を傷つけているだけで、シーケンシャルアニメーションの作成がこれまでになく簡単になりました。
結論
これは、GreenSockと最も一般的な方法の簡単な紹介です。 これは非常に強力なツールであり、アニメーションの作成を楽しんでいる場合は、次のプロジェクトでの使用を検討する必要があります。