SVG動畫

先上個動畫圖css

說道SVG動畫不得不提到兩個屬性:stroke-dasharray(這個前面有提到,作虛線的)stroke-dashoffset (這個是關鍵)。html

先說說stroke-dasharray 以前提過 能夠把線條作成虛線狀,值能夠爲一個數值 也能夠是一個數組。詳見:SVG 學習<二>進階 SVG世界,視野,視窗 stroke屬性 svg分組 最後一段。在動畫裏 stroke-dasharray 用來繪製路徑或者虛線環繞效果。web

stroke-dashoffset : 官方解釋 svg的偏移數組

作了幾個demo後發現 stroke-dashoffset 相似margin只不過 stroke-dashoffset 的偏移是相對於 圖形或線段的第一個點,好比 矩形就是相對於矩形右上角的點,偏移則是相對於svg元素路徑的偏移。svg

案例分解post

先看上圖的第二個圖形(紅色矩形)學習

HTML代碼動畫

<rect class="No1" x="220" y="30" width="200" height="200" fill="none" stroke-width="10" stroke="red"/>

css代碼url

        .No1{
            stroke-dasharray: 900;
              stroke-dashoffset: 900;
              -webkit-animation: dash 5s linear infinite;
              animation: dash 5s linear infinite;
        }
/*動畫*/
        @-webkit-keyframes anim { to { stroke-dashoffset: 0; } }
        @keyframes anim { to { stroke-dashoffset: 0; } }

代碼解析 spa

stroke-dasharray 的值 大於等於 矩形周長,若等於周長動畫完成後動畫馬上結束,這裏我設置的值比周長多100 動畫會在圖形繪製結束後幾秒後結束,視覺效果會好一些。

stroke-dashoffset 的值 通常等於 矩形周長 ,若大於 矩形周長 動畫效果延時出現, 若小於 矩形周長 動畫效果提早出現。

 

第三個藍色虛線環繞矩形

HTML代碼

<rect class="No2" x="460" y="30" width="100" height="200" fill="none" stroke-width="10" stroke="blue"/>

css代碼

        .No2{
            stroke-dasharray: 30;
              stroke-dashoffset: 600;
              -webkit-animation: anim 5s linear infinite;
              animation: anim 5s linear infinite;
        }
/*動畫*/
        @-webkit-keyframes anim { to { stroke-dashoffset: 0; } }
        @keyframes anim { to { stroke-dashoffset: 0; } }

stroke-dasharray和矩形周長差值成倍數 則造成虛線環繞效果。

 

第四個綠色矩形

HTML代碼

<rect class="No3" x="620" y="30" width="250" height="150" fill="none" stroke-width="10" stroke="green"/>

css代碼

        .No3{
            stroke-dasharray: 900;
              stroke-dashoffset: 2700;
              -webkit-animation: anim 5s linear infinite;
              animation: anim 5s linear infinite;
        }
/*動畫*/
        @-webkit-keyframes anim { to { stroke-dashoffset: 0; } }
        @keyframes anim { to { stroke-dashoffset: 0; } }

stroke-dashoffset 值爲矩形周長三倍 邊框圍繞矩形三週, 若爲矩形周長兩倍 邊框圍繞矩形兩週。

 

第一個青色五角星

HTMl代碼

<polygon points="100,10 40,180 190,60 10,60 160,180" stroke-width="5" stroke="rgb(0,200,200)" fill="none"/>

css代碼

        polygon{
            stroke-dasharray: 2000;
              stroke-dashoffset: 2000;
              transition: 2s all;
        }
        svg:hover polygon{
            stroke-dasharray: 30,10;
            stroke-dashoffset: 0;
        }

hover效果 stroke-dashoffset 值大於等於五角星全部邊長總和。

 

若還有不懂,多試幾回demo改改 stroke-dashoffset 和 stroke-dasharray的值就明白了。

相關文章
相關標籤/搜索