一、準備工作
1、首先,進入阿里的矢量圖標庫,在這個圖標庫里面可以找到很多圖片資源,當然了需要登錄才能下載或者使用,用GitHub賬號或者新浪微博賬號登錄都可以
2、登錄以后,可以搜索自己需要的資源,然后直接下載使用,或者建立圖標庫然后再使用,例如這里以刪除的圖標為例
a) 搜索刪除圖標
b) 選擇需要的圖標,然后可以執行三種操作:添加入庫、收藏或者直接下載,可以根據自己的實際情況來選擇相應操作,這里選擇添加入庫,操作完可以看到圖標已經添加進右上角的購物車里了
c) 點擊右上角的購物車,可以看到如下頁面,這里也是根據自己的具體情況來進行操作
一鍵清除:可以清掉所有圖標
下載素材:下載圖標資源,可以指定顏色、大小以及格式
下載代碼:下載字體圖標的代碼,包括demo的html和css文件、iconfont的css、js以及各種字體文件
添加至項目:建立一個自己的圖標庫,將圖標整合在一起,方便后續應用在自己的實際項目中
d) 這里選擇添加至項目,一開始沒有項目,需要點擊+號的圖標創建一個新項目,然后把新圖標加入到新項目中。如果已經有了項目,則選擇項目并點擊確定即可。這里的項目其實就是上面所說的圖標庫了
e) 進入到我的項目(圖標庫)中,可以看到如下頁面
下載至本地:下載該圖標庫的代碼到本地,代碼包括demo的html和css文件、iconfont的css、js以及各種字體文件,demo是使用說明,iconfont文件是使用這個圖標庫所必須的文件,可根據使用的具體方式引用相應文件
[圖片上傳失敗...(image-99d0da-1563936599336)]
Unicode、Fontclass以及Symbol:三種使用的方式,在下載到本地的代碼中找到demo,demo的html文件中有這三種方式的詳細使用說明
點擊查看在線鏈接:在頁面上可以看到一串字符串.css,這個就是這個圖標庫的在線鏈接,在實際項目中引入該鏈接即可使用而無需下載到本地(這個是FontClass的,Unicode跟Symbol的有屬于自己的在線鏈接)
需要注意的是,如果在圖標庫中新增加了圖標,則需要更新在線鏈接并把該鏈接重新引入到實際項目中,或者重新下載代碼到本地,然后在實際項目中引入最新的iconfont文件
二、使用介紹
以下的使用方式都是來自下載下來的demo代碼,把這些都整合在一起,方便比較和查閱。至于使用在線鏈接的方式,因為比較簡單,這里就不做介紹,可以看下面的實戰
1、Unicode方式
Unicode是字體在網頁端最原始的應用方式,特點是:
- 兼容性最好,支持ie6+,及所有現代瀏覽器
- 支持按字體的方式去動態調整圖標大小,顏色等等
- 不支持多色。只能使用平臺里單色的圖標,就算項目里有多色圖標也會自動去色
注意:新版iconfont支持多色圖標,這些多色圖標在Unicode模式下將不能使用,如果有需求建議使用Symbol的引用方式
使用步驟如下:
a) 拷貝項目下面生成的font-face,如果想要深入了解font-face屬性,可以點擊這里還有here
[](javascript:void(0); "復制代碼")
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">@font-face { font-family: 'iconfont'; src: url('iconfont.eot'); src: url('iconfont.eot?#iefix') format('embedded-opentype'),
url('iconfont.woff') format('woff'),
url('iconfont.ttf') format('truetype'),
url('iconfont.svg#iconfont') format('svg');
}</pre>
](javascript:void(0); "復制代碼")
b) 定義使用iconfont的樣式
[](javascript:void(0); "復制代碼")
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> .iconfont{ font-family:"iconfont" !important; font-size:16px; font-style:normal; -webkit-font-smoothing: antialiased; -webkit-text-stroke-width: 0.2px; -moz-osx-font-smoothing: grayscale;
}</pre>
](javascript:void(0); "復制代碼")
* c) *挑選相應圖標并獲取字體編碼,應用于頁面
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> <i class="iconfont">3</i> </pre>
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; color: rgb(0, 0, 0); font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;"> 3是字體編碼,可在下載的demo.html中查看,或者可以在阿里矢量圖標庫的網站上,進入我的項目查看
2、FontClass方式
FontClass是Unicode使用方式的一種變種,主要是解決Unicode書寫不直觀,語意不明確的問題。與Unicode使用方式相比,具有如下特點:
- 兼容性良好,支持ie8+,及所有現代瀏覽器
- 相比于Unicode語意明確,書寫更直觀。可以很容易分辨這個icon是什么
- 因為使用class來定義圖標,所以當要替換圖標時,只需要修改class里面的unicode引用即可
- 因為本質上還是使用的字體,所以多色圖標還是不支持
使用步驟如下:
a) 引入項目下面生成的fontclass代碼
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> <link rel="stylesheet" type="text/css" href="./iconfont.css"> </pre>
iconfont.css代碼里包含了@font-face、.iconfont以及圖標的unicode引用,其實對比下可以發現Unicode方式和FontClass方式是極其相似的,只不過他們一個用的是圖標的字體編碼,一個用的是圖標的unicode引用而已
[](javascript:void(0); "復制代碼")
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">@font-face {font-family: "iconfont"; src: url('iconfont.eot?t=1495209181038'); /* IE9/ src: url('iconfont.eot?t=1495209181038#iefix') format('embedded-opentype'), / IE6-IE8 / url('iconfont.woff?t=1495209181038') format('woff'), / chrome, firefox / url('iconfont.ttf?t=1495209181038') format('truetype'), / chrome, firefox, opera, Safari, Android, iOS 4.2+/ url('iconfont.svg?t=1495209181038#iconfont') format('svg'); / iOS 4.1- */
} .iconfont { font-family:"iconfont" !important; font-size:16px; font-style:normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
} .icon-enter:before { content: "\e601"; } .icon-setUp:before { content: "\e600"; }</pre>
](javascript:void(0); "復制代碼")
* b) *挑選相應圖標并獲取類名,應用于頁面
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> <i class="iconfont icon-xxx"></i> </pre>
icon-xxx是使用了unicode引用的類名,可在下載的demo.html中查看,或者可以在阿里矢量圖標庫的網站上,進入我的項目查看。xxx是圖標的名字,你可以在網站上修改圖標的名字(FontClass和Symbol都可以),但是切記如果你使用了在線鏈接,則必須在網站上更新在線鏈接,然后將該鏈接更新到你的項目中,如果你是本地使用,則必須下載最新的代碼,然后更新到你的項目中,否則修改無效
3、Symbol方式
這是一種全新的使用方式,應該說這才是未來的主流,也是阿里矢量圖標庫平臺目前推薦的用法,但是在前端,新技術要向老設備看齊,所以你懂得。 這種用法其實是做了一個svg的集合,與另外兩種相比具有如下特點:
- 支持多色圖標了,不再受單色限制
- 通過一些技巧,支持像字體那樣,通過
font-size
,color
來調整樣式(對于前兩種也是同樣適用的,fontsize改變大小,color改變顏色) - 兼容性較差,支持* ie9+,*及現代瀏覽器
- 瀏覽器渲染svg的性能一般,還不如png
使用步驟如下:
a) 引入項目下面生成的Symbol代碼
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> <script src="./iconfont.js"></script></pre>
b) 加入通用css代碼(引入一次就行)
[](javascript:void(0); "復制代碼")
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">.icon { width: 1em; height: 1em; vertical-align: -0.15em; fill: currentColor; overflow: hidden;
}</pre>
](javascript:void(0); "復制代碼")
* c) *挑選相應圖標并獲取類名,應用于頁面
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> <svg class="icon" aria-hidden="true">
<use xlink:href="#icon-xxx"></use>
</svg></pre>
三、實戰
1、本地使用
[](javascript:void(0); "復制代碼")
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>iconfont</title>
<style type="text/css"> @font-face { /* 實際使用中是各用各的,這里不想寫那么多例子,所以就共用了一個,并不推薦這樣 / font-family: "iconfont"; src: url('css/iconfont/iconfont.eot?t=1495209181038'); / IE9/ src: url('css/iconfont/iconfont.eot?t=1495209181038#iefix') format('embedded-opentype'), / IE6-IE8 / url('css/iconfont/iconfont.woff?t=1495209181038') format('woff'), / chrome, firefox / url('css/iconfont/iconfont.ttf?t=1495209181038') format('truetype'), / chrome, firefox, opera, Safari, Android, iOS 4.2+/ url('css/iconfont/iconfont.svg?t=1495209181038#iconfont') format('svg'); / iOS 4.1- */
} .iconfont{ font-family:"iconfont" !important; font-size:16px;font-style:normal; -webkit-font-smoothing: antialiased; -webkit-text-stroke-width: 0.2px; -moz-osx-font-smoothing: grayscale;
} .icon-sendMsg:before { content: "\e60c"; } .icon { width: 1em; height: 1em; vertical-align: -0.15em; fill: currentColor; overflow: hidden;
}
</style>
<script type="text/javascript" src="css/iconfont/iconfont.js"></script>
</head>
<body>
<div style="width: 100%;text-align: center;">
<p><i class="iconfont"></i>Unicode</p>
<p><i class="iconfont icon-sendMsg"></i>FontClass</p>
<p style="font-size: 3em;">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-sendMsg"></use>
</svg> Symbol </p>
</div>
</body>
</html></pre>
](javascript:void(0); "復制代碼")
運行代碼可以看到字體圖標已經出來了
2、在線鏈接使用
[](javascript:void(0); "復制代碼")
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>iconfont</title>
<link rel="stylesheet" type="text/css" >
<style type="text/css"> @font-face { /* Unicode / font-family: 'iconfont'; / project id 293930 */ src: url('http://at.alicdn.com/t/font_kpdcqplvwqwr8uxr.eot'); src: url('http://at.alicdn.com/t/font_kpdcqplvwqwr8uxr.eot?#iefix') format('embedded-opentype'),
url('http://at.alicdn.com/t/font_kpdcqplvwqwr8uxr.woff') format('woff'),
url('http://at.alicdn.com/t/font_kpdcqplvwqwr8uxr.ttf') format('truetype'),
url('http://at.alicdn.com/t/font_kpdcqplvwqwr8uxr.svg#iconfont') format('svg');
} .iconfont{ font-family:"iconfont" !important; font-size:16px;font-style:normal; -webkit-font-smoothing: antialiased; -webkit-text-stroke-width: 0.2px; -moz-osx-font-smoothing: grayscale;
} .icon-sendMsg:before { content: "\e60c"; } .icon { width: 1em; height: 1em; vertical-align: -0.15em; fill: currentColor; overflow: hidden;
} p{ color: #fff;
}
</style>
<script type="text/javascript" src="http://at.alicdn.com/t/font_kpdcqplvwqwr8uxr.js"></script>
</head>
<body>
<div style="width: 100%;text-align: center;background: #000;padding: 20px 0;">
<p><i class="iconfont"></i>Unicode</p>
<p><i class="iconfont icon-sendMsg"></i>FontClass</p>
<p style="font-size: 3em;">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-sendMsg"></use>
</svg> Symbol </p>
</div>
</body>
</html></pre>
](javascript:void(0); "復制代碼")
運行代碼可以看到字體圖標已經出來了