實用創作流程

SVG 標誌適配深色模式:實測 currentColor

炭灰與象牙白陶瓷拱形之間放著一顆小琥珀色球
抽象編輯插畫;下文使用真實產品截圖展示操作。

咖啡館的標誌在淺色賬單上很清楚,放進深色網站頁頭卻消失了。首先要確認網站如何插入 SVG:內聯標記與外部圖片接收頁面顏色的方式並不相同。

我們在 Ciyo 的檔案工作區製作虛構的 Cedar Cup 標誌,並保留可開啟的 HTML 示例。唯一的杯子路徑不變。本例測試的是明確的顏色編輯與瀏覽器行為,不是品牌重設計或整個網站審計。

保留未經修改的 SVG 原始母檔

編輯前先檢查原始檔,記錄 viewBox、路徑資料和固定填色。多種硬編碼填色、描邊或嵌入樣式可能需要分別決定;替換一個屬性不能證明整個主題系統已經完成。

原圖的 viewBox 為 0 0 120 100,唯一的路徑填色是 #303036。Ciyo 在程式碼旁渲染了預覽,用來辨認標誌;可靠編輯所需的資訊仍來自 SVG 原始碼。

完整 Ciyo 產品畫面,顯示原始杯子標誌與 SVG 程式碼
Ciyo 中實際準備的原始檔是向量標記,沒有用影像模型生成標誌。

只改填色,保留幾何

對這個單色標誌,Ciyo 只把 fill="#303036" 換成 fill="currentColor"。獨立檔案比較確認路徑和 viewBox 完全相同。原檔案為 266 位元組,編輯版為 271 位元組,這些數字只描述保留的兩份檔案。

currentColor 使用元素的 color 值。SVG 內聯時,CSS 可以從所在頁面環境提供該值。應明確選定淺色與深色版本的顏色,而不是依賴未說明的預設值。

複製這段檔案工作區提示詞
保持這份 SVG 的 viewBox 和每條路徑不變,另存一份把唯一固定填色替換為 currentColor 的副本。製作真實 HTML,在淺色和深色區域分別展示固定填色與 currentColor 標誌,再加一個外部 img 對照。渲染並檢查 HTML,報告計算填色,回傳可編輯的 SVG 與 HTML 檔案。

在真實 HTML 中測試兩種背景

保留的頁面在兩種對比背景上展示固定填色和 currentColor。淺色區域都使用 #303036;深色區域的 currentColor 使用 #FAF6ED,原版仍是炭灰色,因此問題很容易看出。

我們在 Chrome 開啟實際儲存的 HTML,核對內聯 SVG 的計算填色。這能驗證當前瀏覽器裡的這份標記和樣式,不能證明所有品牌色的對比度或所有發布工具的相容性。

保留的瀏覽器示例中,內聯標誌的計算填色
區域固定填色標誌currentColor 標誌
淺色#303036#303036
深色#303036#FAF6ED
完整 Ciyo 畫布,顯示原始標誌、兩個主題結果與實際 HTML 渲染
Ciyo 儲存了瀏覽器渲染和 SVG 檔案。淺色與深色顏色值在表格中再次列出。

保留外部圖片作為對照

透過 img 載入的 SVG 是獨立圖片文件。父頁面宣告 color,並不等於指示其中的路徑改色。我們的外部圖片對照有意展示這一邊界。若網站需要帶主題色的外部檔案,可以明確匯出顏色版本,或採用合適的內聯實現。

第一次生成的 HTML 在資料 URI 中有錯誤的引號,Ciyo 在最終瀏覽器核對前修正了編碼。這說明應該檢視實際渲染的檔案,而不是僅憑看似合理的程式碼塊驗收。

整合前檢視儲存的頁面

開啟下面的示例,檢查兩種背景,再以目標尺寸核對實際頁頭標誌。顏色修改在技術上正確,小細節仍可能看不清。若標誌可互動,還應分別檢查焦點、連結名稱和可訪問文字。

HTML 自包含,原始碼沒有指令碼。其中的 CSS 與內聯標記是供開發者檢查的示例,不會自動更新線上網站。

實際瀏覽器渲染,顯示四個內聯標誌區域與外部 SVG 圖片對照
獨立開啟儲存的 HTML。外部圖片對照與內聯顏色繼承保持區分。

隨檔案交付顏色規則

把未經修改的原始母檔、編輯後的 SVG 和核對過的 HTML 一起交付,寫清測試過的插入方式與每種背景對應顏色,避免同事把正確檔案放進無法繼承預期顏色的環境。

多色品牌應先約定哪些區域保留固定顏色。先從受控的單色標誌開始,保留刻意設計的品牌色關係,不要把所有填色都一律改為 currentColor。

實用問答

currentColor 會改變外部 img 的顏色嗎?

父頁面的 color 不會自動進入獨立 SVG 圖片文件。請測試插入方式,按需使用明確的顏色版本。

本例重畫標誌了嗎?

沒有。只改了一個 fill 值,路徑資料與 viewBox 和原始母檔一致。

深色模式顏色正確就足夠無障礙了嗎?

還不夠。請在最終介面檢查對比度、尺寸、名稱和連結行為。

在兩種背景上測試一個標誌

把已確認的 SVG 放進 Ciyo,要求保留瀏覽器示例,再把編輯檔案交給網站開發者。