2017-12-04 4 views
0

私はこのコードを理解しています。 2番目には幅を単純に拡大するアニメーションがあります。このコードでは、青色のバーが表示され、黄色のバーが表示され、期待通りに成長しますが、終了すると消えます。両方とも同じ開始点と幅を持ち、プログレスバーを作成します。青いバーの長さが400個のピクセルで、黄色が唯一の250ですので、私は、少なくともそれは私がなぜ私のSVGコード内に2番目の矩形が表示されないのですか

<svg xmlns='http://www.w3.org/2000/svg'> 
    <rect x='10' y='10' height='20' width='400' style='stroke:#ff0000; fill: #0000ff'> 
    </rect> 
    <rect x='10' y='10' height='20' width='0' style='stroke:#ff0000; fill: #ffff00'> 
<animate attributeName='width' attributeType='XML' 
    to='250' 
    begin='0s' 
    dur='2s' /> 
    </rect> 
</svg> 

が、私はまだSVGに新しいですが起こっされるべきだと思うものですが、これはから動作するはず青の150個のピクセルが表示されるはずです私が黄色のバーを読んだことは、最後に行われ、それが一番上になるようにします。

+0

[成長するSVG四角形をアニメーション化する方法]の可能な重複(https://stackoverflow.com/questions/31200679/how-to-animate-svg- –

+2

短い答え: ''タグに 'fill =" freeze "'を追加してください。 –

+0

私はもう一つの質問が方向性をもってもっとしなければならないと思います。私はそれをうまく成長させることができますが、私はあなたのアニメーションの記入を完了したときに消えている問題を抱えていました: "フリーズ"トリックでした –

答えて

1

animateタグには、'freeze'という値の明示的なfillパラメータが含まれている必要があります。それ以外の場合は、デフォルトのfill='remove'が使用されます。つまり、アニメートされたパラメータはアニメーションの前の値(この場合は「0」)に戻ります。

<svg xmlns='http://www.w3.org/2000/svg'> 
    <rect x='10' y='10' height='20' width='400' style='stroke:#ff0000; fill: #0000ff'> 
    </rect> 
    <rect id="r1" x='10' y='10' height='20' width='0' style='stroke:#ff0000; fill: #ffff00'> 
<animate attributeName='width' attributeType='XML' 
    from='0' 
    to='250' 
    begin='0s' 
    dur='2s' 
    fill='freeze' 
     /> 
    </rect> 
</svg> 

(の完全なリファレンス:https://www.w3.org/TR/SVG/animate.html#ValueAttributes

関連する問題