SVG_8_CSS-animation_SVG-animateTransform標籤_動畫解析

知識點:

  •  CSS中使用animation控制動畫效果;

  • SVG中使用animateTransform標籤控制動畫效果;

 

PS:雖然兩者寫法上稍微有點區別,但原理上是一致的;

 

一,先來說說CSS中的控制方法。

<style>  #svg {    width: 1500px;    height: 400px;    background: url("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3675415932,4054970339&fm=26&gp=0.jpg")  }  /*  body{background: black}*/  /* animation:name duration timing-function         delay     iteration-count             direction    動畫屬性  名稱, 持續時長, 時間分佈函數,默認爲ease,延時多長時間,持續次數,默認爲1次  infinite表示無限次,指定運行方向*/  /* (ease:比如從左到右,開始較慢,中間較快,末尾較慢的運動) */  /* 後面幾個參數可以不指定,只需指定前兩個的name和duration即可。*/  /* infinite表示執行無限次  alternate表示鏡像執行,這個執行起來有循環效果,有意思 */  #cir {    animation: wjw 2s infinite alternate  }  @keyframes wjw {    0% {      transform: scale(0.5)    }    /* 50% {      transform: scale(5);      fill: aqua;    } */    100% {      transform: scale(10);      /* x:150; */      fill: rgb(73, 255, 88);    }  }</style><div id="svg">    <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewbox="0 0 500 500">      <g stroke="yellow" stroke-width="1" id="g">        <polygon points="50 0 100 0 100 100 150 100 75 150 0 100 50 100" stroke-dasharray="2 3 2"></polygon>        <text x="70" y="40" stroke-width=“10” text-anchor="center">點</text>        <text x="70" y="80" stroke-width=“10” text-anchor="center">在</text>        <text x="70" y="120" stroke-width=“10” text-anchor="center">看</text>      </g>
    </svg> </div>

animation:name duration timing-function delay iteration-count direction

各個字段含義分別是:

name--動畫屬性名稱; 

duration--持續時長;

timing-function--時間分佈函數,默認爲ease;

     (ease:比如從左到右,開始較慢,中間較快,末尾較慢的運動)

delay--延時多長時間;

iteration-count--持續次數,默認爲1次 infinite表示無限次

direction指定運行方向,alternate表示鏡像執行,這個執行起來有循環效果,有意思。

animation動畫

PS:後面幾個參數可以不指定,只需指定前兩個的name和duration即可。 

 

二,再來看看,直接在SVG中的animateTransform標籤的用法。

代碼就拿我做的“點在看”來說吧。爲了使文字豎排,用了比較笨的方法,就是上下排列三個text

 

<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewbox="-200 0 300 300">  <g stroke="yellow" stroke-width="1" >    <polygon points="50 0 100 0 100 100 150 100 75 150 0 100 50 100" stroke-dasharray="2 3 2"></polygon>    <text x="75" y="25"  text-anchor="middle">點</text>    <text x="75" y="55"  text-anchor="middle">在</text>    <text x="75" y="85"  text-anchor="middle">看</text>    <animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="2s" type="scale" from="0" to="2" repeatCount="indefinite" />  </g>
</svg>

其中,最關鍵的是<animateTransform>這個標籤,這裏面定義了與CSS中animation類似的屬性,可對比參考下。其中type有五種類型:rotate(旋轉)、scale(縮放)、skewX(X軸方向偏移)、skewY(Y軸方向偏移)、tranlate(位移)。

用好這個aniateTransform標籤,可以創造出很多意想不到的效果,後面繼續。

 

想看展示效果,請移步公衆號:Xi說SVG,文章同步更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章