前言:圖標除了使用傳統的圖片格式之外,還可以使用字體圖標和svg
1.獲取圖標素材
在項目中想使用圖標就必須要有素材,這個素材如果本身公司有提供那再好不過。如果沒有就需要自己去網上找,阿里巴巴矢量圖標庫就是個好去處(官網自己百度)。
比如客戶的需求中需要一個二維碼的功能,就需要要一個二維碼的圖標,而客戶沒有提供,這就需要自己去網上找了。首先進入阿里巴巴矢量圖標庫網站,搜索想要的圖標

找到圖標之后,可以選中加入購物車,也可以選中直接下載。如果想要字體圖標格式的圖標,就需要先加入項目中(這里只注重如何尋找素材,至於字體圖標如何使用請自行百度)。


另外直接下載也是可以的,但是只有png和svg格式

直接下載單個圖標,這個網站可以直接生成一個svg標簽

2.使用阿里巴巴圖標庫提供的svg標簽
SVG 意為可縮放矢量圖形(Scalable Vector Graphics)。它使用 XML 格式定義圖像。
阿里巴巴圖標庫提供的svg標簽可以直接拿來使用,至於svg的原理可以自行搜教程。
<!-- path標簽的里面的數據太長,已被我省略 -->
<div class="box">
<svg t="1589166382218" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6205" width="200" height="200">
<path d="M742.8 121.5c-2.3 " p-id="6211"></path>
</svg>
</div>

svg標簽的width和height屬性時空中svg圖標大小的,我修改成100和100,下面的效果對比圖

3.如何使用下載的素材文件
素材使用共有3種方法:Unicode/font class/smybol,前兩者使用的是CSS3的字體圖標方式,第三者使用的是svg
在將圖標添加到項目中后,下載會得到一個zip文件,解壓之后可以看到

下面的都是官方說明文件提供的使用方法
- 1.Unicode 引用
Unicode 是字體在網頁端最原始的應用方式,特點是:
兼容性最好,支持 IE6+,及所有現代瀏覽器。
支持按字體的方式去動態調整圖標大小,顏色等等。
但是因為是字體,所以不支持多色。只能使用平台里單色的圖標,就算項目里有多色圖標也會自動去色。
Unicode 使用步驟如下:
第一步:拷貝項目下面生成的 @font-face
@font-face {
font-family: 'iconfont';
src: url('iconfont.eot');
src: url('iconfont.eot?#iefix') format('embedded-opentype'),
url('iconfont.woff2') format('woff2'),
url('iconfont.woff') format('woff'),
url('iconfont.ttf') format('truetype'),
url('iconfont.svg#iconfont') format('svg');
}
第二步:定義使用 iconfont 的樣式
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
第三步:挑選相應圖標並獲取字體編碼,應用於頁面
<span class="iconfont"></span>

- 2.font-class 引用
font-class 是 Unicode 使用方式的一種變種,主要是解決 Unicode 書寫不直觀,語意不明確的問題。
與 Unicode 使用方式相比,具有如下特點:
兼容性良好,支持 IE8+,及所有現代瀏覽器。
相比於 Unicode 語意明確,書寫更直觀。可以很容易分辨這個 icon 是什么。
因為使用 class 來定義圖標,所以當要替換圖標時,只需要修改 class 里面的 Unicode 引用。
不過因為本質上還是使用的字體,所以多色圖標還是不支持的。
使用步驟如下:
第一步:引入項目下面生成的 fontclass 代碼:
<link rel="stylesheet" href="./iconfont.css">
第二步:挑選相應圖標並獲取類名,應用於頁面:
<span class="iconfont .icon-erweima"></span>

其實Unicode和font class兩種方式都是使用css3的字體圖標,只是字符編碼的引入方式不一樣而已,Unicode直接將字符編碼寫在標簽中,而font class使用更為元素的方式為其添加字符編碼,原理還是一樣的



- 3.Symbol 引用
這是一種全新的使用方式,應該說這才是未來的主流,也是平台目前推薦的用法。相關介紹可以參考這篇文章 這種用法其實是做了一個 SVG 的集合,與另外兩種相比具有如下特點:
支持多色圖標了,不再受單色限制。
通過一些技巧,支持像字體那樣,通過 font-size, color 來調整樣式。
兼容性較差,支持 IE9+,及現代瀏覽器。
瀏覽器渲染 SVG 的性能一般,還不如 png。
使用步驟如下:
第一步:引入項目下面生成的 symbol 代碼:
<script src="./iconfont.js"></script>
第二步:加入通用 CSS 代碼(引入一次就行):
<style>
.icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
</style>
第三步:挑選相應圖標並獲取類名,應用於頁面:
<svg class="icon" aria-hidden="true">
<use xlink:href="##icon-erweima"></use>
</svg>

4.擴展
- 1.字體圖標實際上就是字體,所以可以使用css修改文字樣式的方式來修改字體圖標
.diy {
font-size:50px;
color:red;
}
<div class="box">
<span class="iconfont diy"></span>
</div>

-2.修改symbol方式引入圖標的樣式
修改寬高
.diy {
width:50px;
height:50px;
}
<body>
<div class="box">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-erweima"></use>
</svg>
<svg class="icon diy" aria-hidden="true">
<use xlink:href="#icon-erweima"></use>
</svg>
</div>
</body>

修改顏色:svg圖標顏色是通過所在的path標簽的fill屬性指定的,例如:

打開iconfont.js這個文件,根據id找到所在圖標的path標簽,修改其中fill屬性值即可
