マウスオーバー/マウスアウト(SMIL)でインラインSVGの塗りつぶし属性をアニメーション化する方法

matthewelsom

単純なインラインSVGを作成しました。

SMILを使用して、親SVGのfillすべてのパスの属性をピンクにアニメーション化しようとしましたmouseoverid

mouseout私が希望fill、常にリセットされます。

私はしませんしたいfillアニメーションをオンに繰り返しますmouseover一度実行して「停止」(つまりピンクのまま)したいのですが、アニメーションの継続時間が完了した場合限ります。

私は以下を試しました:

#logoSVG {
    width: 100px;
}
<a href="javascript:void(0)" id="logo">
  <svg version="1.1" id="logoSVG" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 113.7 62.2" enable-background="new 0 0 113.7 62.2" xml:space="preserve">
    <path id="M" fill="#1E90FF" d="M16.1,38.9l-9-30.4H6.7C7.2,14.8,7.2,18.8,7.2,21v17.9H0V0h11.2l9,29.5l0,0L30,0h11.2v38.5h-7.6
    V20.6c0-0.9,0-1.8,0-3.1c0-1.3,0-4,0.4-9h-0.4l-9.8,30.4L16.1,38.9L16.1,38.9z" />
    <path id="A" fill="#1E90FF" d="M74.7,38.9l-2.7-9.4H58.2l-2.7,9.4h-9L60,0h9.8l13.9,38.9H74.7z M69.8,22.8c-2.7-8.5-4-13-4.5-14.3
    c-0.4-0.9-0.4-1.8-0.9-2.7c-0.4,2.2-2.2,7.6-4.9,16.6h10.3V22.8z" />
    <path id="T" fill="#1E90FF" d="M102.9,38.9h-8.1V7.2H84.6V0h29.1v6.7h-10.3v32.2H102.9z" />
    <rect id="Line" y="55.9" fill="#1E90FF" width="113.7" height="6.3" />

    <animate xlink:href="#M" attributeName="fill" from="#1E90FF" to="pink" dur="0.8s" begin="logoSVG.mouseover" end="logoSVG.mouseout" id="m-anim" />
    <animate xlink:href="#A" attributeName="fill" from="#1E90FF" to="pink" dur="0.8s" begin="m-anim.begin + 0s" end="logoSVG.mouseout" id="a-anim" />
    <animate xlink:href="#T" attributeName="fill" from="#1E90FF" to="pink" dur="0.8s" begin="m-anim.begin + 0s" end="logoSVG.mouseout" id="t-anim" />
    <animate xlink:href="#Line" attributeName="fill" from="#1E90FF" to="pink" dur="0.8s" begin="m-anim.begin + 0s" end="logoSVG.mouseout" id="line-anim" />
  </svg>
</a>

ご覧のとおりfill、最後に「停止」しません。

私は何かが足りないのですか?mouseover/mouseout右の値は、この効果を達成するために使用するには?

ChrisOnCode

-Tagsに「fill」属性を追加し、「freeze」に設定できます。例:

<animate xlink:href="#M" attributeName="fill" from="#1E90FF"
  to="pink" dur="0.8s" begin="logoSVG.mouseover" 
  end="logoSVG.mouseout" id="m-anim" fill="freeze"/>

ドキュメントから

フリーズ-アニメーションのアクティブな期間がドキュメントの残りの期間(またはアニメーションが再開されるまで)終了すると、アニメーション効果は「フリーズ」されます。

更新

マウスイベントが正しくトリガーされた場合、フリーズされた塗りつぶしは元に戻りません。

または、各状態を明示的にアニメーション化することもできます。

  1. 色を変える
  2. 詰め物を保管してください
  3. 塗りつぶしを元の色に戻します

わかりやすくするために、例を1文字に減らしました。

#logoSVG {
    border: 1px dashed #777;
    width: 100px;
}
<a href="javascript:void(0)" id="logo">
  <svg version="1.1" id="logoSVG" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 113.7 62.2" enable-background="new 0 0 113.7 62.2" xml:space="preserve">
    <path id="M" fill="#1E90FF" d="M16.1,38.9l-9-30.4H6.7C7.2,14.8,7.2,18.8,7.2,21v17.9H0V0h11.2l9,29.5l0,0L30,0h11.2v38.5h-7.6
    V20.6c0-0.9,0-1.8,0-3.1c0-1.3,0-4,0.4-9h-0.4l-9.8,30.4L16.1,38.9L16.1,38.9z" />

    <animate xlink:href="#M" attributeName="fill" from="#1E90FF" to="pink" dur="0.8s" begin="logoSVG.mouseover" end="logoSVG.mouseout" id="m-anim" fill="freeze"/>
    <animate xlink:href="#M" attributeName="fill" from="pink" to="pink" dur="0.8s" begin="logoSVG.mouseover+0.8s" end="logoSVG.mouseout" id="m-anim" fill="freeze"/>
    <animate xlink:href="#M" attributeName="fill" from="#1E90FF" to="#1E90FF" begin="logoSVG.mouseout" end="logoSVG.mouseover" id="m-anim" fill="freeze"/>

  </svg>
</a>

補足:begin = "m-anim.begin + 0s"のような開始値はFirefox(Developer Edition 41.0a2(2015-07-18)では少なくとも私のマシンでは機能しないようです

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

透明な背景と塗りつぶしでアウトライン画像をオーバーレイする方法は?

分類Dev

クイックマウスオーバーマウスアウトのアニメーションバグ

分類Dev

Angular 4:マウスの方向に基づいたアニメーションでマウスオーバーにオーバーレイを表示する

分類Dev

CSSを使用してSVGパス要素の塗りつぶしをアニメーション化する

分類Dev

マウスオーバーとマウスアウトを使用するときのぎくしゃくしたアニメーションの回避

分類Dev

ホバー(マウスオーバー)svgまたはcssソリューションでのみsvgアニメーションを再起動します

分類Dev

ホバー中にテキストカラーアニメーションをアニメーションカラーで塗りつぶします

分類Dev

マウスホバーの設定タイムアウト機能でアニメーションを停止する方法

分類Dev

マウスのホバーでdivを3Dにアニメーション化する方法

分類Dev

Androidのタブレイアウトで編集ボックスのオーバーレイをアニメーション化する方法は?

分類Dev

PythonPIL画像をカラーアウトラインで塗りつぶします

分類Dev

カラーSVGパスをアニメーションで塗りつぶします

分類Dev

svgパス塗りつぶしアニメーション

分類Dev

アニメーションによる Svg パスの塗りつぶし

分類Dev

マウスオーバーとanimate.cssで要素をアニメーション化する

分類Dev

マウスオーバーとマウスアウトを使用したVueコンポーネントのアニメーション

分類Dev

pygameでサーフェスをアウトラインで塗りつぶします

分類Dev

すべてのブラウザでホバー時にsvgパスをアニメーション化する

分類Dev

ホバーとマウスリーブでdivを遅延してアニメーション化する

分類Dev

SVGストロークと塗りつぶしアニメーション

分類Dev

Googleは、Androidで、ショーのマーカーのバウンスインアニメーションをマップしますか?

分類Dev

マウスオーバー時にD3塗りつぶし円グラフセグメント

分類Dev

ズームインおよびズームアウトするときに、キャンバス要素の円マーカーの不要な塗りつぶしの不透明度の変更を回避するにはどうすればよいですか?

分類Dev

アニメーション要素をマウスオーバーで表示したままにする

分類Dev

Androidで「塗りつぶし」アニメーションを作成する方法

分類Dev

SVG画像でクラウドアイコンをアニメーション化する方法

分類Dev

svg塗りつぶしパスアニメーションの問題

分類Dev

ロードされたSTLメッシュ(CUBE ETCのような単純な形状ではない)をランダムな粒子で塗りつぶし、three.jsでバインドされたこのジオメトリでアニメーション化する方法

分類Dev

Jqueryを使用したマウスオーバー後のマウスアウトのアニメーションの反転

Related 関連記事

  1. 1

    透明な背景と塗りつぶしでアウトライン画像をオーバーレイする方法は?

  2. 2

    クイックマウスオーバーマウスアウトのアニメーションバグ

  3. 3

    Angular 4:マウスの方向に基づいたアニメーションでマウスオーバーにオーバーレイを表示する

  4. 4

    CSSを使用してSVGパス要素の塗りつぶしをアニメーション化する

  5. 5

    マウスオーバーとマウスアウトを使用するときのぎくしゃくしたアニメーションの回避

  6. 6

    ホバー(マウスオーバー)svgまたはcssソリューションでのみsvgアニメーションを再起動します

  7. 7

    ホバー中にテキストカラーアニメーションをアニメーションカラーで塗りつぶします

  8. 8

    マウスホバーの設定タイムアウト機能でアニメーションを停止する方法

  9. 9

    マウスのホバーでdivを3Dにアニメーション化する方法

  10. 10

    Androidのタブレイアウトで編集ボックスのオーバーレイをアニメーション化する方法は?

  11. 11

    PythonPIL画像をカラーアウトラインで塗りつぶします

  12. 12

    カラーSVGパスをアニメーションで塗りつぶします

  13. 13

    svgパス塗りつぶしアニメーション

  14. 14

    アニメーションによる Svg パスの塗りつぶし

  15. 15

    マウスオーバーとanimate.cssで要素をアニメーション化する

  16. 16

    マウスオーバーとマウスアウトを使用したVueコンポーネントのアニメーション

  17. 17

    pygameでサーフェスをアウトラインで塗りつぶします

  18. 18

    すべてのブラウザでホバー時にsvgパスをアニメーション化する

  19. 19

    ホバーとマウスリーブでdivを遅延してアニメーション化する

  20. 20

    SVGストロークと塗りつぶしアニメーション

  21. 21

    Googleは、Androidで、ショーのマーカーのバウンスインアニメーションをマップしますか?

  22. 22

    マウスオーバー時にD3塗りつぶし円グラフセグメント

  23. 23

    ズームインおよびズームアウトするときに、キャンバス要素の円マーカーの不要な塗りつぶしの不透明度の変更を回避するにはどうすればよいですか?

  24. 24

    アニメーション要素をマウスオーバーで表示したままにする

  25. 25

    Androidで「塗りつぶし」アニメーションを作成する方法

  26. 26

    SVG画像でクラウドアイコンをアニメーション化する方法

  27. 27

    svg塗りつぶしパスアニメーションの問題

  28. 28

    ロードされたSTLメッシュ(CUBE ETCのような単純な形状ではない)をランダムな粒子で塗りつぶし、three.jsでバインドされたこのジオメトリでアニメーション化する方法

  29. 29

    Jqueryを使用したマウスオーバー後のマウスアウトのアニメーションの反転

ホットタグ

アーカイブ