Icon Font淺談

這周繼續在弄hybird app 的 UI框架的重構,進行到了編寫換膚功能的階段,而在作換膚以前,我想應該先弄一套框架內置的圖標。css

而圖標無非就是兩種作法:css3

1.圖片web

使用圖片很正常,可是有缺陷的。app

1.衆多的圖標緻使了增長了許多HTTP請求框架

  PS:有人會說我把它們弄成一張大圖不久行了,但是這樣弄了以後,你連大小都沒法改變。因此確定仍是一批小圖片。工具

2.放大縮小失真字體

3.同張圖片若是須要不一樣顏色,又得弄多一套出來。網站

2.字體編碼

也就是這篇要說得Icon Font。作法就是講你的圖標作成字符,而後用css3中的@font-face去使用它。url

PS:不說怎麼去作字體,由於這對於缺乏美工功底的我來講,作起來太吃力了。

優勢:

1.不失真

2.可作到0 HTTP請求

3.可隨意更換顏色大小(由於它是字體嘛),甚至是漸變

缺點:

1.即便使用一個圖標也要用整個字體css(我以爲無傷大雅)

找另外一條路弄Icon Font

在尋找資源中,有個網站不錯——IcoMoon,https://icomoon.io/#home

1. 這個網站提供20+套,合計上千個不一樣風格的icon font(有免費,有收費的,可是基本上使用免費的就夠用了)

2. 這個網站有一個在線工具,你可使用這個工具來編輯它提供的icon font,而且選擇本身喜歡的打包下載

就說下它的使用步驟

1.點擊

PS:默認會有free的Icon在下面了

2.增長一些icon庫進來

而後選擇你喜歡的圖標,再點擊Generate Font,就能夠到下載頁面。

3.下載配置

之因此選擇那一項,是爲了生成的Icon字體文件直接以base64編碼放在css文件裏面

4.結果

剛剛所說的css文件就是style,咱們看下里面有什麼內容(被我刪減了些東西)

@font-face {
    font-family: 'icomoon';
    src: url(data:application/x-font-ttf;charset=utf-8;base64,XXXXXXXXXXXXXXXXXXXXXXXXX) format('truetype');
    font-weight: normal;
    font-style: normal;
}

PS:後面的"XXXXXXX"太長了,就不在這裏顯示。

這個就是對字體的定義,src的引用也變成了base64編碼的字符串。

[class^="icon-"], [class*=" icon-"] {
    font-family: 'icomoon';
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;

    /* Better Font Rendering =========== */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.icon-checkmark:before {
    content: "\e600";
}

這個定義字體樣式,值得注意的是後面一段css,之因此用:before僞類來聲明,其實也是爲了使用時能夠不用寫一個空標籤"&#33",用法以下。

<span class="icon-checkmark"></span>

就可以愉快的使用Icon Font

總結:

對於mobile web應用來講,Icon Font去實現一套應用或框架默認圖標是個不錯選擇,而不失真是這種方式鼓舞人使用的利器。固然若是是複雜的圖標(色彩多樣...)就不能用了,只能用回圖片。

番外:

一些工具

文件與base64字符串進行轉換工具: http://www.motobit.com/util/base64-decoder-encoder.asp

查看、編輯字體: TypeTool 3或FontCreator

相關文章
相關標籤/搜索