成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

酷炫的SVG 動(dòng)態(tài)圖標(biāo)

mindwind / 833人閱讀

摘要:在上能看到好多效果驚艷的圖標(biāo)?,F(xiàn)在來(lái)看代碼,相信不會(huì)再是一頭霧水了也可以用控制的屬性,控制的動(dòng)畫過(guò)程,做成能響應(yīng)點(diǎn)擊等事件的圖標(biāo)按鈕。當(dāng)然能做的遠(yuǎn)不止圖標(biāo),這里有不少例子。

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

  在 ?loading.io?上能看到好多效果驚艷的loading圖標(biāo)。它們都是用svg寫成的,寥寥幾行代碼,比img圖片更精細(xì)更節(jié)省體積,比純dom實(shí)現(xiàn)要更靈活和高效。

  怎么畫這些圓和方塊?怎么著色?怎么動(dòng)起來(lái)? 先看看svg的基礎(chǔ)知識(shí),然后將上面第一個(gè)圖標(biāo)畫出來(lái)。

?

一、基本圖形元素

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

 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元素的樣式可以寫成標(biāo)簽的屬性,也可以寫在style里面。下面是一些主要的樣式屬性:

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

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

  注意:transform 默認(rèn)以svg左上角為基點(diǎn),而不是圓心或其他中心。左上角是svg坐標(biāo)系原點(diǎn)。了解transform和坐標(biāo)系統(tǒng),可以參考 這里。

?

三、輔助元素

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

  • ?元素通常用來(lái)對(duì)相關(guān)圖形元素進(jìn)行分組,以便統(tǒng)一操作,比如旋轉(zhuǎn),縮放或者添加相關(guān)樣式等。
  • ?實(shí)現(xiàn)SVG現(xiàn)有圖形的重用,可以重用單個(gè)SVG圖形元素,也可以重用定義的組元素。
  • ?內(nèi)部定義的元素不會(huì)直接顯示,可以不用事先定義樣式,而是在使用實(shí)例化的時(shí)候再定義。
  • ?能夠創(chuàng)建自己的視窗,兼具的分組功能和初始不可見(jiàn)的特性。

  對(duì)于上面提到的transform基點(diǎn)問(wèn)題,可以通過(guò)嵌套標(biāo)簽并偏移的位置,進(jìn)而重設(shè)基點(diǎn)。如下畫出幾個(gè)水平排列的圓圈,并設(shè)置不同的縮放尺寸,得到

 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>

?

四、動(dòng)畫的實(shí)現(xiàn)

  svg的動(dòng)畫效果是基于動(dòng)畫標(biāo)簽元素實(shí)現(xiàn)的:

  實(shí)現(xiàn)單屬性的過(guò)渡效果,

  實(shí)現(xiàn)transform變換動(dòng)畫效果,

  實(shí)現(xiàn)路徑動(dòng)畫效果。

  svg的寫法很靈活,樣式可以寫成標(biāo)簽屬性也可以寫在style里面,動(dòng)畫標(biāo)簽可以通過(guò)xlink指定元素,也可以寫在動(dòng)畫元素的內(nèi)部。如下演示animateTransform的xlink寫法:


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

  上例的動(dòng)畫是A到B的過(guò)渡,要形成順暢的循環(huán),至少要定義三個(gè)關(guān)鍵點(diǎn)。animateTransform支持更多更靈活的屬性設(shè)置:

  • values:多個(gè)關(guān)鍵點(diǎn)的值,替代from和to,例如 values="0;1;0"?
  • keyTimes:跟values對(duì)應(yīng),各個(gè)點(diǎn)的時(shí)間點(diǎn)
  • calcMode:動(dòng)畫快慢方式。discrete?|?linear?|?paced?|?spline
  • keySplines:設(shè)置運(yùn)動(dòng)的貝塞爾控制點(diǎn),calcMode為spline時(shí)有效

?  對(duì)svg動(dòng)畫的更詳細(xì)介紹,參考 這里 。

五、代碼實(shí)例

  ? ? ?

  circle畫圓,fill著色,用g標(biāo)簽包裹并定位,transform設(shè)置初始形變,animateTransform設(shè)置動(dòng)畫?,F(xiàn)在來(lái)看代碼,相信不會(huì)再是一頭霧水了:


    
        
            
        
    
    
        
            
        
    
    
        
            
        
    
    
        
            
        
    

?

  也可以用js控制svg的屬性,控制svg的動(dòng)畫過(guò)程,做成能響應(yīng)點(diǎn)擊等事件的圖標(biāo)按鈕。當(dāng)然svg能做的遠(yuǎn)不止圖標(biāo),這里有不少例子。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/2006.html

相關(guān)文章

  • SVG

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

    104828720 評(píng)論0 收藏0
  • 萬(wàn)萬(wàn)沒(méi)想到,Python 竟能繪制出如此炫的三維圖

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

    mmy123456 評(píng)論0 收藏0
  • 可能是最全的前端動(dòng)效庫(kù)匯總

    摘要:非常的龐大,而且它是完全為設(shè)計(jì)而生的動(dòng)效庫(kù)。它運(yùn)行于純粹的之上,是目前最強(qiáng)健的動(dòng)畫資源庫(kù)之一。可能是創(chuàng)建滾動(dòng)特效最好用的工具,它支持大量的瀏覽器,只要它們支持和特性??梢酝ㄟ^(guò)安裝吊炸天了,接近現(xiàn)實(shí)生活中的物理運(yùn)動(dòng)碰撞慣性動(dòng)畫庫(kù)。 收集日期為2019-02-28,★代表當(dāng)時(shí)的該項(xiàng)目在github的star數(shù)量 Animate.css 56401 ★ 一個(gè)跨瀏覽器的動(dòng)效基礎(chǔ)庫(kù),是許多基礎(chǔ)動(dòng)...

    afishhhhh 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.38 - 神奇的 CSS

    摘要:層疊即表示允許以多種方式來(lái)描述樣式,一個(gè)元素可以被渲染呈現(xiàn)出多種樣式??梢宰寣傩缘淖兓^(guò)程持續(xù)一段時(shí)間,而不是立即生效。比如,將元素的顏色從白色改為黑色,通常這個(gè)改變是立即生效的,使用后,將按一個(gè)曲線速率變化。 showImg(https://segmentfault.com/img/bVZwyL?w=900&h=385); CSS 的全稱是 Cascading Style Sheet...

    elliott_hu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<