介紹
我最近收到一份錯(cuò)誤報(bào)告,其中 svg 圖標(biāo)在高對(duì)比度模式下無(wú)法正確顯示。在這篇文章中,我將分享對(duì)我有用的解決方案。
解決方案
在高對(duì)比度模式下,我使用canvastext系統(tǒng)顏色來(lái)自動(dòng)調(diào)整圖標(biāo)的顏色。
.icon { mask-image: url(svg-link); background-color: currentColor; ... } @media (forced-colors: active) { .icon::before { background-color: CanvasText; } }
登錄后復(fù)制
就我而言,我最初使用 currentcolor 從父元素繼承顏色。但是,在高對(duì)比度模式下,我想在子元素中將背景顏色普遍設(shè)置為 canvastext,所以我應(yīng)用了此更改。
什么是 canvastext?
canvastext 是指用于應(yīng)用程序內(nèi)容或文檔的文本顏色。它會(huì)自動(dòng)調(diào)整以提供與系統(tǒng)背景顏色的最佳對(duì)比度。
通過(guò)使用 canvastext,您可以確保即使用戶(hù)啟用高對(duì)比度模式,文本和圖標(biāo)仍然可見(jiàn)。此外,由于 canvastext 根據(jù)系統(tǒng)主題進(jìn)行自適應(yīng),因此它在深色和淺色模式下都能很好地工作。
就我而言,圖標(biāo)的背景顏色最初設(shè)置為黑色。然而,當(dāng)背景在高對(duì)比度模式下變黑時(shí),該圖標(biāo)就變得不可見(jiàn)。將顏色更改為白色使其再次可見(jiàn),但為了在所有場(chǎng)景中一致地處理此問(wèn)題,我選擇使用系統(tǒng)顏色 canvastext。
參考
https://developer.mozilla.org/en-us/docs/web/css/system-color