2016-11-25 9 views
0

私はルータのSVGアニメーションを作成しています。
これはあまりエキサイティングではありませんが、次の質問があります。SVGアニメーションを組み合わせる@keyframes

ルーターは、各側面ごとに異なる色をしています。すべての側には自分のクラスがあります。
は、現在、私の色-充填は次のようになります。

@keyframes router_base 
{ 
    0% { 
     fill: #85d1d3; 
    } 
    50% { 
     fill: #85d1d3; 
     stroke-dashoffset: 0; 
    } 
    100% { 
     fill: black; 
     stroke-dashoffset: 0; 
    } 
} 

これは、与えられた時間の50%が、それは#85d1d3のまま、最後の50%は、それが黒になっていることrouter_baseを伝えます。

いずれの側にも独自の色があります。この例では、すべての色に対して@keyframeを作成する必要があります。
これはよりスマートに実行できるように見えます。

ここではすべてのもののフィドルです。 https://jsfiddle.net/yzzubxgf/

+0

それを呼び出すに1つの再利用可能なアニメーションで行うことができますが、[here](https://jsfiddle.net/yzzubxgf/1/)のような2つの再利用可能なアニメーションで行うことができます。それが役に立ったら私に教えてください。もしそうなら、答えとして投稿します。 – Harry

+0

本当は問題は残っていません。アイデアは、最初にすべての線を描画し、次に色を塗りつぶすというものです。すべての面に自分の色があるので、色ごとに@keyframeでこれを行うことができると思った。 – Interactive

+0

複数のアニメーションが必要なのは、すべての面に独自の色があると言うからです。塗りつぶし遷移の前に線を描画させるのは簡単なことです。 [ここ](https://jsfiddle.net/yzzubxgf/2/)のように調整するだけの遅延が必要です。 (私はストロークの色を変更してより目立たせるようにしました) – Harry

答えて

0

SASSを使用すると、次のようなさまざまなアニメーション用のコードが生成されますミックスインを作成することができれば:

@mixin createKeyFrames($animationName, $color1, $color2 : black) { 
    @keyframes #{$animationName} 
    { 
     0% { 
      fill: $color1; 
     } 
     50% { 
      fill: $color1; 
      stroke-dashoffset: 0; 
     } 
     100% { 
      fill: $color2; 
      stroke-dashoffset: 0; 
     } 
    } 
} 

をそしてできることならば、私はわからない

@include createKeyFrames(router_base, #85d1d3);