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

更新於 發佈於 閱讀時間約 11 分鐘

以往開發網頁經常使用到 Google 的 Material Symbols 服務,但大多都是直接引入預設設定,最多就是在官方提供的簡易編輯器做一些 icon 樣式填滿、線框的調整而已。

仔細看了官方文件之後,才發現原來還有一些設定可以做調整,使用上更加彈性,因此寫了這篇文章記錄下來。

raw-image

如果使用 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
留言分享你的想法!
avatar-img
傑米的沙龍
7會員
30內容數
正在一點一滴學習程式,相信知識量總有一天會匯聚成大海,目前專門研究前端中。
傑米的沙龍的其他內容
2023/10/06
要改變表單元素的樣式其實相當麻煩,有些樣式還不能更改,這篇就來探討如何把它們改成喜歡的模樣吧。
Thumbnail
2023/10/06
要改變表單元素的樣式其實相當麻煩,有些樣式還不能更改,這篇就來探討如何把它們改成喜歡的模樣吧。
Thumbnail
2023/10/05
一個超簡單就能達到滾動視差的套件 - AOS
Thumbnail
2023/10/05
一個超簡單就能達到滾動視差的套件 - AOS
Thumbnail
2023/10/04
切版有許多眉角需要注意,來探討那些經常導致切版結果與設計稿產生落差的原因。 一、文字的高度本體是 line-height:🔍 文字所佔據的高度不是由font-size決定,而是line-hight。一開始練習切版時,都想著設定好字的尺寸和字重就 ok 了吧?殊不知這是造成切出來的網頁與設計
Thumbnail
2023/10/04
切版有許多眉角需要注意,來探討那些經常導致切版結果與設計稿產生落差的原因。 一、文字的高度本體是 line-height:🔍 文字所佔據的高度不是由font-size決定,而是line-hight。一開始練習切版時,都想著設定好字的尺寸和字重就 ok 了吧?殊不知這是造成切出來的網頁與設計
Thumbnail
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
本章節旨在介紹 TypeScript 的基本資料型別,包括內建型別、型別轉換、自訂型別、元組、集合、陣列、和字典型別。透過理解和使用這些型別,可以提高代碼的可讀性和可維護性。
Thumbnail
本章節旨在介紹 TypeScript 的基本資料型別,包括內建型別、型別轉換、自訂型別、元組、集合、陣列、和字典型別。透過理解和使用這些型別,可以提高代碼的可讀性和可維護性。
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。
Thumbnail
這篇主要會透過 CDN 引入 Material Icons,並補足官方文件裡只有提到 Filled 類別的引用方式,但沒有提到其他類別,像是 Outlined、Rounded、Sharp、Two tone,另外還會提到如何透過偽元素加入 Material Icons,現在我們就來看看如何引入吧!
Thumbnail
這篇主要會透過 CDN 引入 Material Icons,並補足官方文件裡只有提到 Filled 類別的引用方式,但沒有提到其他類別,像是 Outlined、Rounded、Sharp、Two tone,另外還會提到如何透過偽元素加入 Material Icons,現在我們就來看看如何引入吧!
Thumbnail
除了常見的 Material Icons 和 Font Awesome 提供免費圖示資源,現在又有 「icofont」可以引入 icon 到網頁中了!目前看網路上對它的討論較少,這篇主要會來談談它引入到網頁的方式。
Thumbnail
除了常見的 Material Icons 和 Font Awesome 提供免費圖示資源,現在又有 「icofont」可以引入 icon 到網頁中了!目前看網路上對它的討論較少,這篇主要會來談談它引入到網頁的方式。
Thumbnail
以往寫網頁經常使用到 Google Fonts 裡的 Material Icons 服務,但大多都是直接引入預設設定,最多就是在官方提供的簡易編輯器做一些 icon 樣式填滿、線框的調整而已,仔細看了官方文件之後,才發現原來還有一些設定可以做調整,使用上更加彈性,因此寫了這篇文章記錄下來。
Thumbnail
以往寫網頁經常使用到 Google Fonts 裡的 Material Icons 服務,但大多都是直接引入預設設定,最多就是在官方提供的簡易編輯器做一些 icon 樣式填滿、線框的調整而已,仔細看了官方文件之後,才發現原來還有一些設定可以做調整,使用上更加彈性,因此寫了這篇文章記錄下來。
Thumbnail
我覺得這個顏色太淺了,可能需要調整一下~ 好的,沒問題! 於是你在設計系統中開始尋找使用到這個顏色的所有元件,然後一個一個修改,改完一個檔案還有另一個,好不容易改完了卻在測試的時候發現還有幾個地方沒有改到⋯⋯天阿~瘋掉!!! 這樣令人抓狂的場景不只有在設計的時候會發生,當我們交付設計稿之後的開發階段
Thumbnail
我覺得這個顏色太淺了,可能需要調整一下~ 好的,沒問題! 於是你在設計系統中開始尋找使用到這個顏色的所有元件,然後一個一個修改,改完一個檔案還有另一個,好不容易改完了卻在測試的時候發現還有幾個地方沒有改到⋯⋯天阿~瘋掉!!! 這樣令人抓狂的場景不只有在設計的時候會發生,當我們交付設計稿之後的開發階段
Thumbnail
此版本的目標畫面成果是: *金色名字。 *金色社交按鈕圖示,點擊按鈕另開對應的網頁或著顯示comming soon。 *名字和按鈕在網頁中央,如果網頁寬度不夠會換行,夠就不換行。
Thumbnail
此版本的目標畫面成果是: *金色名字。 *金色社交按鈕圖示,點擊按鈕另開對應的網頁或著顯示comming soon。 *名字和按鈕在網頁中央,如果網頁寬度不夠會換行,夠就不換行。
Thumbnail
常常會遇到好不容易寫好程式,但是輸出的時候沒辦法按照自己想要的格式,或是間隔來輸出,這時需要用到的就是格式化輸出,格式化輸出就是調整排版的一個形式。
Thumbnail
常常會遇到好不容易寫好程式,但是輸出的時候沒辦法按照自己想要的格式,或是間隔來輸出,這時需要用到的就是格式化輸出,格式化輸出就是調整排版的一個形式。
Thumbnail
與HTML不同,CSS是專門修改網頁內容「樣式」的程式語言,也就是說你沒有辦法透過CSS去新增網頁的文字或是圖片等相關的內容,但你可以透過HTML新增網頁內容後,再使用CSS去修改他的樣式,例如⋯⋯
Thumbnail
與HTML不同,CSS是專門修改網頁內容「樣式」的程式語言,也就是說你沒有辦法透過CSS去新增網頁的文字或是圖片等相關的內容,但你可以透過HTML新增網頁內容後,再使用CSS去修改他的樣式,例如⋯⋯
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News