在網頁中加入預設或自定義 icon 通通搞定 - Material Symbols 使用攻略

閱讀時間約 11 分鐘
以往開發網頁經常使用到 Google 的 Material Symbols 服務,但大多都是直接引入預設設定,最多就是在官方提供的簡易編輯器做一些 icon 樣式填滿、線框的調整而已。
仔細看了官方文件之後,才發現原來還有一些設定可以做調整,使用上更加彈性,因此寫了這篇文章記錄下來。
Google Fonts - Material Icons 介面
如果使用 Material Symbols 時你也有過以下疑問,這篇都會提到:
問題一、FILL, wght, GRAD, opsz 這些究竟代表什麼意義?
問題二、需要在一個網頁中同時引入填滿與線框樣式的 icon
接下來就讓我們進入問題一,了解一下 FILL, wght, GRAD, opsz。

Material Symbols 各個軸線的意義

在 Material Symbols 中控制 icon 樣式,主要透過以下四個軸線:

FILL 軸

  • 數值只有 0 和 1,0 代表為線框 icon,1 代表填滿的 icon
  • 預設值為 0

wght 軸

  • 定義筆畫粗細
  • 數值範圍介於 100~700 之間,數字越大筆畫越粗
  • 會影響到符號的整體大小

GRAD 軸

  • 數值介於 -25~200 之間
覺得蠻像效果沒那麼顯著的 wght,查看官方文件有提到使用時機:
  • -25:可用在深色背景,減少眩光
  • 200:讓符號更佳醒目
目前先記錄這樣,如果有新發現再來更新這部份。

opsz 軸

  • 數值介於 20dp 到 48dp 之間
  • 筆畫粗細會自動跟著圖示大小改變
這部分可以到官方網站,右邊有簡易的編輯器,可以調整數值看看效果。

Material Symbols 引入方式

有三種方法,差別在於是否需要自定義 icon 樣式,與是否要下載到本地使用
  1. Google Fonts API - 使用預設設定
  2. Google Fonts API - 載入變數字體
  3. 下載到本地
這邊 Google Fonts API 使用上沒有想像中複雜,就是一段 HTML 語法要貼到 <head> 裡而已

方法一:Google Fonts API - 使用預設設定

  • 這種方法可以先在 Google Fonts 提供的編輯器做微調,但無法直接在程式碼中進行更改
  • 如果網頁設計稿中全部的 icon 都是相同樣式,可以採用該方法
在 HTML 文件的 <head> 裡放入以下語法,即完成引入:
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined" rel="stylesheet" />
如果沒有做任何微調的話,各個軸線的預設數值分別為:
  • wght:400
  • GRAD:0
  • FILL:0
  • opsz:48

方法二:Google Fonts API - 載入變數字型

  • 此方式可以在程式碼中透過這四個軸,個別設定 icon
  • 當網頁設計稿中的 icon 有不同樣式,可使用該方法
在 HTML 文件的 <head> 裡放入以下語法,即完成引入:
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet" />
上面連結裡最後出現的 number..number,代表的是數值使用範圍,例如 20..48,表示的就是 20~48 數值皆可使用,且對應的是 opsz 軸。

方法三:下載到本地

  1. 到此官方 Github下載需要的字型檔案
  2. 在 CSS 中引入檔案
@font-face {
font-family: 'Material Symbols Outlined';
font-style: normal;
src: url(/material-symbols.woff) format('woff');
}
3. 額外在 CSS 中寫入樣式
因為前面兩個方式是從官方提供的 API 直接引入 icon,預設已帶有這些設定,目前是要自行下載到本地使用,所以設定要另外自己加上去。
如果沒有以下設定,Material Symbols 是會跑不出來的哦
.material-symbols-outlined {
  font-family: 'Material Symbols Outlined';
  font-weight: normal;
  font-style: normal;
  font-size: 24px;  /* Preferred icon size */
  display: inline-block;
  line-height: 1;
  text-transform: none;
  letter-spacing: normal;
  word-wrap: normal;
  white-space: nowrap;
  direction: ltr;
}
介紹到這邊,大致上就知道 Material Symbols 的設定和使用方式,下面我們來一個狀況題吧。

狀況題:在同一網頁載入填滿 / 線框 icon

這邊使用「方法二 Google Fonts API - 載入變數字型」來進行

步驟1:引入變數字型

<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet" />

步驟2:在程式碼中自定義樣式

這步驟有兩種做法,使用其中一種就可以囉
寫法一:在 HTML 標籤的 style 屬性寫入 Google Fonts 的軸線設定
//直接針對父容器做設定,裡面的 icon 都會一起吃到樣式
//注意這裡的 'FILL' 數值
<div style="font-variation-settings: 'FILL' 0, 'wght' 100, 'GRAD' 0, 'opsz' 48;">
  <span class="material-symbols-outlined">search</span>
  <span class="material-symbols-outlined">home</span>
  <span class="material-symbols-outlined">settings</span>
  <span class="material-symbols-outlined">favorite</span>
</div>
//注意這裡的 'FILL' 數值
<div style="font-variation-settings: 'FILL' 1, 'wght' 100, 'GRAD' 0, 'opsz' 48;">
<span class="material-symbols-outlined">search</span>
<span class="material-symbols-outlined">home</span>
<span class="material-symbols-outlined">settings</span>
<span class="material-symbols-outlined">favorite</span>
</div>  
寫法二:使用 CSS 樣式寫入設定
HTML 檔案
<div class="outline-icon">
<span class="material-symbols-outlined">search</span>
<span class="material-symbols-outlined">home</span>
<span class="material-symbols-outlined">settings</span>
<span class="material-symbols-outlined">favorite</span>
</div>

//注意這裡的 'FILL' 數值
<div class="fill-icon">
<span class="material-symbols-outlined">search</span>
<span class="material-symbols-outlined">home</span>
<span class="material-symbols-outlined">settings</span>
<span class="material-symbols-outlined">favorite</span>
</div>
CSS 檔案:注意軸線的大小寫一定要相同,不然會失效,像是 'FILL' 不能寫成 'fill'
.outline-icon{
  font-variation-settings: 'FILL' 0;
  //如果要同時寫入多個設定
  //font-variation-settings: 'FILL' 0, 'wght' 700;
}

.fill-icon{
font-variation-settings: 'FILL' 1;
}
這種寫法甚至能夠搭配 animation 語法使用,做一些簡單的動畫哦!
有關 Google 提供的開源圖示 Material Icons 分享就到這裡,若有錯誤歡迎指正,感謝看完這篇的大家。

參考資料

為什麼會看到廣告
avatar-img
7會員
30內容數
正在一點一滴學習程式,相信知識量總有一天會匯聚成大海,目前專門研究前端中。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
傑米的沙龍 的其他內容
JavaScript 的型別可以分為兩類,分別是原始型別與物件型別,這邊主要談的是 ES6 的寫法。值得注意的是,JavaScript 變數本身不帶有型別,值才有。
npm 是一個套件管理工具,開發中經常需要使用第三方套件,npm 是可以用來管理很多套件的工具,這邊指的套件可能是 Library, 框架, 工具等,例如 Bootstrap, jQuery, Vue.js, babel 都可以統一由它管理。
JavaScript 的型別可以分為兩類,分別是原始型別與物件型別,這邊主要談的是 ES6 的寫法。值得注意的是,JavaScript 變數本身不帶有型別,值才有。
npm 是一個套件管理工具,開發中經常需要使用第三方套件,npm 是可以用來管理很多套件的工具,這邊指的套件可能是 Library, 框架, 工具等,例如 Bootstrap, jQuery, Vue.js, babel 都可以統一由它管理。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
排版微系列調專門分享如何透過一些調整讓設計與排版更好看,並且每張設計都會說明為何調整的原因,以及原本設計可能有的問題。 如果你是設計初學者那這份內容會很適合你,因為會很細節的去講解排版原因,如果你看完喜歡,我每月會有三篇微調詳解固定分享給訂閱會員,歡迎訂閱。
Thumbnail
CSS入門-Day3 的主要內容包括字體大小、字體顏色、字體系列、字體樣式、字體粗細等屬性。此外,還涵蓋了文本對齊、行高、文字間距、單詞間距和文本裝飾。最後,介紹了如何引入和使用 Google 字體,以提高網頁的排版效果。
Thumbnail
排版微系列調專門分享如何透過一些調整讓設計與排版更好看,並且每張設計都會說明為何調整的原因,以及原本設計可能有的問題。 如果你是設計初學者那這份內容會很適合你,因為會很細節的去講解排版原因,如果你看完喜歡,我每月會有三篇微調詳解固定分享給訂閱會員,歡迎訂閱。
Thumbnail
排版微系列調專門分享如何透過一些調整讓設計與排版更好看,並且每張設計都會說明為何調整的原因,以及原本設計可能有的問題。 如果你是設計初學者那這份內容會很適合你,因為會很細節的去講解排版原因,如果你看完喜歡,我每月會有三篇微調詳解固定分享給訂閱會員,歡迎訂閱。
Thumbnail
【設計素材】Google Fonts Icons 這個網站是 Google Fonts 的「Icons」頁面,提供了免費的字型,其中的 Material Symbols 圖示字型,這組字型收錄了超過三千個圖示 icon。在這組圖示中,還提供了多款可調整的樣式,包含了不同粗細組合,您可以直接
Thumbnail
在 CSS 的開發過程中,重複使用如顏色、字體大小等值是常見的需求。為了提高程式碼維護性和靈活性,就需要用到 CSS 變量了,CSS 變量可以讓你在樣式表中儲存可重用的值。本文將介紹 CSS 變量的概念、使用方法,以及它對撰寫 CSS 的影響。
Thumbnail
如何透過 CSS 來美化和增強文本的可讀性,對於提升用戶體驗至關重要。本文將介紹如何使用 CSS 來處理網頁上的文本,包括字型設定、文本排列、裝飾等多方面。
標準筆墨 在我的教學系統中,最重要的,是建立一套標準的筆墨紙的組合。 這個標準建立在我自己的書寫經驗上,是經過千錘百煉的書寫、試驗、修正、再修正,不斷修正之後的結果,特點是可以用最小的力氣、方法,寫出理想的筆畫質感。 毛筆、紙張的特性決定了書法的風格,這是無法挑戰和超越的,因為物理性質如此,用
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
排版微系列調專門分享如何透過一些調整讓設計與排版更好看,並且每張設計都會說明為何調整的原因,以及原本設計可能有的問題。 如果你是設計初學者那這份內容會很適合你,因為會很細節的去講解排版原因,如果你看完喜歡,我每月會有三篇微調詳解固定分享給訂閱會員,歡迎訂閱。
Thumbnail
CSS入門-Day3 的主要內容包括字體大小、字體顏色、字體系列、字體樣式、字體粗細等屬性。此外,還涵蓋了文本對齊、行高、文字間距、單詞間距和文本裝飾。最後,介紹了如何引入和使用 Google 字體,以提高網頁的排版效果。
Thumbnail
排版微系列調專門分享如何透過一些調整讓設計與排版更好看,並且每張設計都會說明為何調整的原因,以及原本設計可能有的問題。 如果你是設計初學者那這份內容會很適合你,因為會很細節的去講解排版原因,如果你看完喜歡,我每月會有三篇微調詳解固定分享給訂閱會員,歡迎訂閱。
Thumbnail
排版微系列調專門分享如何透過一些調整讓設計與排版更好看,並且每張設計都會說明為何調整的原因,以及原本設計可能有的問題。 如果你是設計初學者那這份內容會很適合你,因為會很細節的去講解排版原因,如果你看完喜歡,我每月會有三篇微調詳解固定分享給訂閱會員,歡迎訂閱。
Thumbnail
【設計素材】Google Fonts Icons 這個網站是 Google Fonts 的「Icons」頁面,提供了免費的字型,其中的 Material Symbols 圖示字型,這組字型收錄了超過三千個圖示 icon。在這組圖示中,還提供了多款可調整的樣式,包含了不同粗細組合,您可以直接
Thumbnail
在 CSS 的開發過程中,重複使用如顏色、字體大小等值是常見的需求。為了提高程式碼維護性和靈活性,就需要用到 CSS 變量了,CSS 變量可以讓你在樣式表中儲存可重用的值。本文將介紹 CSS 變量的概念、使用方法,以及它對撰寫 CSS 的影響。
Thumbnail
如何透過 CSS 來美化和增強文本的可讀性,對於提升用戶體驗至關重要。本文將介紹如何使用 CSS 來處理網頁上的文本,包括字型設定、文本排列、裝飾等多方面。
標準筆墨 在我的教學系統中,最重要的,是建立一套標準的筆墨紙的組合。 這個標準建立在我自己的書寫經驗上,是經過千錘百煉的書寫、試驗、修正、再修正,不斷修正之後的結果,特點是可以用最小的力氣、方法,寫出理想的筆畫質感。 毛筆、紙張的特性決定了書法的風格,這是無法挑戰和超越的,因為物理性質如此,用