Javascript圖標


前言:圖標除了使用傳統的圖片格式之外,還可以使用字體圖標和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">&#xe646;</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">&#xe600;</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屬性值即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM