摘要:在上能看到好多效果驚艷的圖標(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里面。下面是一些主要的樣式屬性:
svg還支持很多濾鏡效果,能做漸變、陰影、模糊、圖像混合等等。不需要了解那么多,例如要畫幾個(gè)彩色圓圈,用circle 配合fill 即可。
注意:transform 默認(rèn)以svg左上角為基點(diǎn),而不是圓心或其他中心。左上角是svg坐標(biāo)系原點(diǎn)。了解transform和坐標(biāo)系統(tǒng),可以參考 這里。
?
svg有幾個(gè)輔助元素:
對(duì)于上面提到的transform基點(diǎn)問(wèn)題,可以通過(guò)嵌套
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的動(dòng)畫效果是基于動(dòng)畫標(biāo)簽元素實(shí)現(xiàn)的:
svg的寫法很靈活,樣式可以寫成標(biāo)簽屬性也可以寫在style里面,動(dòng)畫標(biāo)簽可以通過(guò)xlink指定元素,也可以寫在動(dòng)畫元素的內(nèi)部。如下演示animateTransform的xlink寫法:
上例的動(dòng)畫是A到B的過(guò)渡,要形成順暢的循環(huán),至少要定義三個(gè)關(guān)鍵點(diǎn)。animateTransform支持更多更靈活的屬性設(shè)置:
discrete
?|?linear
?|?paced
?|?spline
? 對(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
摘要:目前只提供了一些基礎(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 + ...
摘要:作者通常我們用繪制的都是二維平面圖,但有時(shí)也需要繪制三維場(chǎng)景圖,比如像下面這樣的這些圖怎么做出來(lái)呢今天就來(lái)分享下如何一步步繪制出三維矢量圖。八面體我們先以下面這個(gè)八面體為例。 showImg(https://segmentfault.com/img/remote/1460000019800947); 作者 | Jay Alammar 通常我們用 Python 繪制的都是二維平面圖,但有...
摘要:非常的龐大,而且它是完全為設(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)...
摘要:層疊即表示允許以多種方式來(lái)描述樣式,一個(gè)元素可以被渲染呈現(xiàn)出多種樣式??梢宰寣傩缘淖兓^(guò)程持續(xù)一段時(shí)間,而不是立即生效。比如,將元素的顏色從白色改為黑色,通常這個(gè)改變是立即生效的,使用后,將按一個(gè)曲線速率變化。 showImg(https://segmentfault.com/img/bVZwyL?w=900&h=385); CSS 的全稱是 Cascading Style Sheet...
閱讀 3053·2021-09-03 10:33
閱讀 1278·2019-08-30 15:53
閱讀 2627·2019-08-30 15:45
閱讀 3389·2019-08-30 14:11
閱讀 541·2019-08-30 13:55
閱讀 2590·2019-08-29 15:24
閱讀 1921·2019-08-26 18:26
閱讀 3573·2019-08-26 13:41