SVG圖標(biāo)在移動(dòng)端的應(yīng)用
SVG是基于XML的矢量圖像格式,用戶可靈活運(yùn)用圖像進(jìn)行搜索、索引、腳本以及壓縮。
在移動(dòng)設(shè)備 retina 屏幕 經(jīng)常會(huì)遇到圖標(biāo)不清晰的問題。
為了解決這個(gè)問題,我們有以下幾種方法
切一張 2倍甚至3倍大小的圖,然后用css 進(jìn)行縮放,這樣雖然解決了圖標(biāo)不清晰的問題,但是容量也成倍增加,導(dǎo)致頁面加載慢 ,hybird 包體積變大。
使用iconfont,無論你是什么分辨率,是否retina,無論你怎么放大,它可以保證圖標(biāo)不會(huì)出現(xiàn)任何模糊 ,一份字體文件可以存放很多圖標(biāo),調(diào)用管理非常方便。因?yàn)槭鞘噶克匀萘糠浅P?。可以用css 控制顏色陰影大小。只能是單色圖標(biāo)。
使用SVG,和iconfont一樣是矢量圖標(biāo),具備iconfont優(yōu)點(diǎn)的同時(shí),SVG圖標(biāo)可以是多色圖標(biāo) ,體積比iconfont略大。
現(xiàn)在我們講講如何使用 SVG 圖標(biāo)
在web開發(fā)中SVG主要有以下幾種使用方法:
使用img、object、embed 標(biāo)簽直接引用svg。這種方法的缺點(diǎn)主要在于要求每個(gè)圖標(biāo)都單獨(dú)保存成一個(gè)SVG文件,使用時(shí)也是單獨(dú)請(qǐng)求的,增加了HTTP請(qǐng)求。
Inline SVG,直接把SVG寫入 HTML 中,這種方法簡(jiǎn)單直接,而且具有非常好的可調(diào)性。Inline SVG 作為HTML文檔的一部分,不需要單獨(dú)請(qǐng)求。臨時(shí)需要修改某個(gè)圖標(biāo)的形狀也比較方便。但是Inline SVG使用上比較繁瑣,需要在頁面中插入一大塊SVG代碼不適合手寫,圖標(biāo)復(fù)用起來也比較麻煩。
SVG Sprite。這里所說的Sprite技術(shù),沒錯(cuò),類似于CSS中的Sprite技術(shù)。圖標(biāo)圖形整合在一起,實(shí)際呈現(xiàn)的時(shí)候準(zhǔn)確顯示特定圖標(biāo)。其實(shí)基礎(chǔ)的SVG Sprite也只是將原來的位圖改成了SVG而已。
使用 SVG 中的 symbol,use 元素 來制作圖標(biāo)。這種方法的解決了上述三種方式帶來的弊端,少量的http情況,圖標(biāo)可以被緩存 方便復(fù)用,整合和管理起來很非常簡(jiǎn)單
SVG sysbol 就是接下來要講解的類容了
下面來看一段代碼示例:
每個(gè)symbol元素都包含了一個(gè)圖標(biāo) ,整合圖標(biāo)的時(shí)候我們只需要像上面這段代碼一樣這個(gè)symbol元素里面‘塞入’單個(gè)SVG圖標(biāo)的path路徑就可以了 ,因?yàn)槭莤ml所以整合圖標(biāo)非常簡(jiǎn)單。
引用圖標(biāo)同樣簡(jiǎn)單 ,示例如下:
使用use 元素,直接‘use’相對(duì)應(yīng)的symbol ID 就能引用該圖標(biāo)了
上面的示例 SVG symbol 是嵌入在html內(nèi)的 。 SVG symbol 同樣可以 作為 SVG 文件保存 ,這種情況下 我們就需要 use svg地址+id 名 來使用相應(yīng)圖標(biāo):
注:如果如果 svg 放在 CDN靜態(tài)服務(wù)器的話,需要開啟Ajax跨域權(quán)限 。
本文地址:http://m.likemindfilms.com/tutorial/wd2951.html
- 專訪:石墨文檔產(chǎn)品總監(jiān)羅穎
- UI設(shè)計(jì)不得不知的移動(dòng)端UI尺寸適
- 光音移動(dòng)設(shè)計(jì)規(guī)范 — 表單類
- 體驗(yàn)設(shè)計(jì)中的排序問題
- 網(wǎng)頁設(shè)計(jì)精粹 網(wǎng)頁中那些迷人的按
- aliued:響應(yīng)式設(shè)計(jì)的現(xiàn)狀與趨勢(shì)
- 10個(gè)智能對(duì)象處理的ps技巧
- 網(wǎng)頁UI - 原子設(shè)計(jì)理論(上)
- 如何通過設(shè)計(jì)提升banner點(diǎn)擊率?
- 晉小彥視覺設(shè)計(jì)系列文章(二):全屏