何謂 theme-color
Html Head 中有個叫 theme-color 的 meta 標籤,其 content 可以放 css 有效的 color 值,來影響瀏覽器或移動裝置的狀態欄和工具列的顏色。
<meta name="theme-color" content=“blue” />
現在支援的環境,主要是 Safari(MacOS) 和 PWA (Progressive Web Application)。
如果沒有設定 theme-color,瀏覽器就會使用預設的顏色(light or dark)。
以 Linkedin 無設定顏色為例:

以 Facebook 設定了藍色為例:

但 Facebook 雖然設定了藍色,在 Chrome(MacOS) 就是瀏覽器本身的顏色:

theme-color 是讓使用體驗更好的 meta 標籤。這個體驗在一般網頁可能沒有那麼明顯,因為大家已習慣了網頁就是限縮在瀏覽器的某一個範圍中;但對 PWA 來說,由於沒有了瀏覽器的介面,影響就會比較顯著。
若沒設定 theme-color 的話,上方工具列就會留白,若剛好 PWA 的主題顏色是深色,留白的底就會讓整體顯得特別奇怪。
以我之前製作的高鐵時刻查詢網站為例:


可以看的出來在 PWA 時(右邊),上方的留白就顯得很不和諧,而 PWA 的核心之一,就是盡可能讓網頁模擬成手機 APP。對我來說,這個留白等於是功虧一簣。
當然,由於 theme-color 目前只會運行在 Safari(MacOS) 和 PWA 上,而你又無法確保 user 會不會下載 PWA──畢竟多數人只會用瀏覽器開網頁或直接下載 APP 使用──theme-color 可能並不是那麼重要。但如果你閱讀到這邊,相信就是想多瞭解它。接下來就讓我們看一下使用方法。
使用方法
<html>
<head>
<meta name="theme-color" content=“blue” />
</head>
</html>
content 裡面要放有效的 CSS color 值,常見的有:
/* 命名顏色 */
rebeccapurple
aliceblue
/* RGB 十六進制 */
#f09
#ff0099
/* RGB(紅、綠、藍) */
rgb(255 0 153)
rgb(255 0 153 / 80%)
給系統的淺色或深色主題設定不同的 theme-color
prefers-color-scheme 為 user 自行對裝置設定的偏好主題顏色(深或淺),我們可以直接針對深色或淺色設定不同的 content:
<meta name="theme-color" media="(prefers-color-scheme: light)" content="white" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="black" />
使用 JavaScript 動態改變 theme-color
如果網頁有提供工具讓 user 自行改變主題顏色,或是希望 user 點選不同的內容時呈現不同的主題顏色,則可以考慮使用 js 動態調整 theme-color 的內容:
document
.querySelector("meta[name='theme-color']")
.setAttribute("content", red);
在 React 中動態改變 theme-color
若是希望讓系統初始化時,程式自動根據各種情境來改變 theme-color,請記得在 component 渲染完好後再觸發,也就是使用 useEffect:
import { FC } from "react";
const ThemeComponent: FC<> = () => {
useEffect(() => {
document
.querySelector("meta[name='theme-color']")
.setAttribute("content", red);
}, []);
}
Next.js 設定 theme-color 方法
在 _app.tsx 中設定:
// _app.tsx
import { FC } from "react";
import { AppProps } from "next/app";
import Head from "next/head";
const App: FC<AppProps> = ({ Component, pageProps }) => {
return (
<>
<Head>
<meta name="theme-color" content="#0000ff" />
</Head>
</>
)
}
成果
以我最近製作的台鐵時刻查詢網站來說,深色和淺色的主題會各自有對應的 theme-color,並且在 user 手動切換主題顏色時,theme-color 也會一起變動!


結論
不使用 theme-color 不會有什麼問題,但我認為這是讓 PWA 拼上最後一塊拼圖的標籤。如果有時間的話,不妨設定看看。
udenafil buy
udenafil buy
lasix medication
lasix medication
minoxidil pills for hair loss
minoxidil pills for hair loss
cialis pill description
cialis pill description
viagra kidneys
viagra kidneys
tadalafil viagra
tadalafil viagra