国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

酷炫的SVG 動態圖標

mindwind / 823人閱讀

摘要:在上能看到好多效果驚艷的圖標。現在來看代碼,相信不會再是一頭霧水了也可以用控制的屬性,控制的動畫過程,做成能響應點擊等事件的圖標按鈕。當然能做的遠不止圖標,這里有不少例子。

? ? ? ?? ? ? ? ??? ? ? ? ? ?? ? ? ? ? ? ??? ? ? ? ? ? ??? ? ? ? ??

  在 ?loading.io?上能看到好多效果驚艷的loading圖標。它們都是用svg寫成的,寥寥幾行代碼,比img圖片更精細更節省體積,比純dom實現要更靈活和高效。

  怎么畫這些圓和方塊?怎么著色?怎么動起來? 先看看svg的基礎知識,然后將上面第一個圖標畫出來。

?

一、基本圖形元素

  svg有一些預定義的形狀元素:矩形,圓形,橢圓,直線,折線,多邊形,路徑和文本

 1 
 2 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="300" height="300" viewBox="0 0 300 300">
 3 
 4     
 5     <line x1="0" y1="0" x2="250" y2="30" />
 6 
 7     
 8     <polygon points="5,5 100,100 50,200" />
 9 
10     
11     <rect x="100" y="100" width="120" height="100" />
12 
13     
14     <circle cx="100" cy="50" r="40" stroke="black"/>
15 
16     
17     <text x="0" y="20" style="font-size:16px;font-weight: bold">Try SVGtext>
18 
19 svg>

?

二、樣式與效果?

  svg元素的樣式可以寫成標簽的屬性,也可以寫在style里面。下面是一些主要的樣式屬性:

  • stroke:?筆觸顏色
  • stroke-width:筆觸寬度
  • stroke-opacity:筆觸的透明度
  • fill:填充色,即background
  • fill-opacity:填充色的透明度
  • transform:圖形變換,類似css3 transform

  svg還支持很多濾鏡效果,能做漸變、陰影、模糊、圖像混合等等。不需要了解那么多,例如要畫幾個彩色圓圈,用circle 配合fill 即可。

  注意:transform 默認以svg左上角為基點,而不是圓心或其他中心。左上角是svg坐標系原點。了解transform和坐標系統,可以參考 這里。

?

三、輔助元素

  svg有幾個輔助元素: 。它們不代表具體形狀,而是幫助進行圖形元素的分組管理、重復使用等。具體介紹可以參考 這里。

  • ?元素通常用來對相關圖形元素進行分組,以便統一操作,比如旋轉,縮放或者添加相關樣式等。
  • ?實現SVG現有圖形的重用,可以重用單個SVG圖形元素,也可以重用定義的組元素。
  • ?內部定義的元素不會直接顯示,可以不用事先定義樣式,而是在使用實例化的時候再定義。
  • ?能夠創建自己的視窗,兼具的分組功能和初始不可見的特性。

  對于上面提到的transform基點問題,可以通過嵌套標簽并偏移的位置,進而重設基點。如下畫出幾個水平排列的圓圈,并設置不同的縮放尺寸,得到

 1 <svg width="80px" height="80px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
 2     <g transform="translate(20 50)">
 3         <circle cx="0" cy="0" r="7" fill="#e15b64" transform="scale(0.99275 0.99275)" />
 4     g>
 5     <g transform="translate(40 50)">
 6         <circle cx="0" cy="0" r="7" fill="#f47e60" transform="scale(0.773605 0.773605)" />
 7     g>
 8     <g transform="translate(60 50)">
 9         <circle cx="0" cy="0" r="7" fill="#f8b26a" transform="scale(0.42525 0.42525)" />
10     g>
11     <g transform="translate(80 50)">
12         <circle cx="0" cy="0" r="7" fill="#abbd81" transform="scale(0.113418 0.113418)" />
13     g>
14 svg>

?

四、動畫的實現

  svg的動畫效果是基于動畫標簽元素實現的:

  實現單屬性的過渡效果,

  實現transform變換動畫效果,

  實現路徑動畫效果。

  svg的寫法很靈活,樣式可以寫成標簽屬性也可以寫在style里面,動畫標簽可以通過xlink指定元素,也可以寫在動畫元素的內部。如下演示animateTransform的xlink寫法:


    
    
        attributeName="transform"  
        type="scale"  
        begin="0s"    
        dur="3s"      
        from="1"      
        to="2"        
        repeatCount="indefinite"   
    />

  上例的動畫是A到B的過渡,要形成順暢的循環,至少要定義三個關鍵點。animateTransform支持更多更靈活的屬性設置:

  • values:多個關鍵點的值,替代from和to,例如 values="0;1;0"?
  • keyTimes:跟values對應,各個點的時間點
  • calcMode:動畫快慢方式。discrete?|?linear?|?paced?|?spline
  • keySplines:設置運動的貝塞爾控制點,calcMode為spline時有效

?  對svg動畫的更詳細介紹,參考 這里 。

五、代碼實例

  ? ? ?

  circle畫圓,fill著色,用g標簽包裹并定位,transform設置初始形變,animateTransform設置動畫。現在來看代碼,相信不會再是一頭霧水了:


    
        
            
        
    
    
        
            
        
    
    
        
            
        
    
    
        
            
        
    

?

  也可以用js控制svg的屬性,控制svg的動畫過程,做成能響應點擊等事件的圖標按鈕。當然svg能做的遠不止圖標,這里有不少例子。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/2006.html

相關文章

  • SVG

    摘要:目前只提供了一些基礎功能。中與的區別開發者第一次接觸手寫那種,雖然很多情況都有設計師使用來完成這項工作,但還是不排除需要利用到的每個元素。輕量級,具備靈活的來自團隊,全球非常出名的可視化團隊。于是筆者嘗試著把移植到中。 使用SVG + CSS實現動態霓虹燈文字效果 早上無意間進入一個網站,看到他們的LOGO效果略屌,如圖: 剛開始以為是gif動畫之類的,審查元素發現居然是用SVG + ...

    104828720 評論0 收藏0
  • 萬萬沒想到,Python 竟能繪制出如此炫的三維圖

    摘要:作者通常我們用繪制的都是二維平面圖,但有時也需要繪制三維場景圖,比如像下面這樣的這些圖怎么做出來呢今天就來分享下如何一步步繪制出三維矢量圖。八面體我們先以下面這個八面體為例。 showImg(https://segmentfault.com/img/remote/1460000019800947); 作者 | Jay Alammar 通常我們用 Python 繪制的都是二維平面圖,但有...

    mmy123456 評論0 收藏0
  • 可能是最全的前端動效庫匯總

    摘要:非常的龐大,而且它是完全為設計而生的動效庫。它運行于純粹的之上,是目前最強健的動畫資源庫之一。可能是創建滾動特效最好用的工具,它支持大量的瀏覽器,只要它們支持和特性。可以通過安裝吊炸天了,接近現實生活中的物理運動碰撞慣性動畫庫。 收集日期為2019-02-28,★代表當時的該項目在github的star數量 Animate.css 56401 ★ 一個跨瀏覽器的動效基礎庫,是許多基礎動...

    afishhhhh 評論0 收藏0
  • SegmentFault 技術周刊 Vol.38 - 神奇的 CSS

    摘要:層疊即表示允許以多種方式來描述樣式,一個元素可以被渲染呈現出多種樣式。可以讓屬性的變化過程持續一段時間,而不是立即生效。比如,將元素的顏色從白色改為黑色,通常這個改變是立即生效的,使用后,將按一個曲線速率變化。 showImg(https://segmentfault.com/img/bVZwyL?w=900&h=385); CSS 的全稱是 Cascading Style Sheet...

    elliott_hu 評論0 收藏0

發表評論

0條評論

mindwind

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<