成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CSS Color-Scheme 和深色模式

開發 前端
color-scheme顧名思義,即為“配色方案”,在系統中指的是“白天模式”和“夜間模式”。使用這個屬性可以輕松的更改瀏覽器的默認配色方案。

介紹一個和深色模式相關的CSS屬性:color-scheme。

一、什么是 color-scheme?

color-scheme[1]顧名思義,即為“配色方案”,在系統中指的是“白天模式”和“夜間模式”。使用這個屬性可以輕松的更改瀏覽器的默認配色方案,語法如下:

color-scheme: normal;
color-scheme: light;
color-scheme: dark;
color-scheme: light dark;

幾個關鍵詞如下:

normal:表示元素未指定任何配色方案,因此應使用瀏覽器的默認配色方案呈現。

light:表示可以使用操作系統亮色配色方案渲染元素。

dark:表示可以使用操作系統深色配色方案渲染元素。

下面來看一個簡單的例子:

<h2>前端偵探</h2>
<button>關注我</button>

在無任何CSS的情況下,效果如下:

圖片

如果將系統配色設置為深色模式,由于什么都沒有做,當然也不會有什么變化,如下:

圖片

現在在根元素上添加color-scheme屬性。

:root{
color-scheme: light dark
}

這里設置兩個值,表示可選的配色方案,由系統來決定。

官方文檔上雖然說是優先選擇,實測兩種順序沒有區別。

效果如下:

圖片

是不是非常神奇?平平無奇的頁面馬上就支持深色模式了。

還可以指定單個值,這樣就和系統配色無關了,比如:

:root{
color-scheme: dark
}

這樣在淺色模式下也能以深色主題來渲染,效果如下:

圖片image-20220702172224904

二、color-scheme 的作用范圍

通過上面的例子看著好像很強大,是不是可以一鍵生成“深色”模式了?其實不然,??color-scheme?? 的作用范圍很有限,包括表單控件、滾動條和 CSS 系統顏色的使用值。

1、表單元素

先看表單元素,就拿 checkbox來說吧。

<input type="checkbox">

圖片

假設現在我們需要做一個深色模式的主題,手動將頁面背景設置為黑色。

body[dark]{
background: #000
}

圖片

是不是感覺到未勾選狀態有點太過刺眼了呢?

這時,就可以用到color-scheme了,可以將表單元素以深色模式渲染。

body[dark]{
background: #000;
color-scheme: dark
}

圖片

這樣是不是柔和多了?這里選中的主題色貌似也發生了變換,這個是瀏覽器為了方便夜間瀏覽默認設置的,如果你不希望這個選中顏色,可以用accent-color來覆蓋。

body{
accent-color: #0175ff
}

效果如下:

圖片

accent-color可以更改表單元素的默認顏色,有興趣的可以參考張鑫旭的這篇文章 CSS accent-color屬性簡介[2]。

下面是其他表單元素的深色模式。

圖片

2、滾動條

color-scheme也能改變滾動條的配色模式。這個在 windows 下比較明顯,默認淺色模式下,滾動條是這種灰白色的。

圖片

如果在沒有自定義滾動條的情況下(很多設計覺得默認滾動條挺好看的),設計了一套深色主題,可能就變成了這樣。

圖片

滾動條是不是顯得非常突兀?是不是只能通過偽類自定義滾動條樣式了呢?現在有了color-scheme就不需要這么麻煩了,直接設置如下:

body[dark]{
color-scheme: dark
}

這樣是不是和諧多了?

圖片

其實 MDN 官網已經這么做了,上面只是臨時屏蔽了這一屬性。

圖片

3、CSS 系統顏色

系統顏色指的是瀏覽器內置的一些顏色。比如前面的button,為什么能自動渲染成深色模式呢?除了因為它是表單元素外,最根本的一點是這些表單元素的默認樣式上使用了系統顏色。注意看下面這個截圖。

圖片

可以看到,button的默認樣式里,使用到了一些系統顏色。

button{
/**/
color: buttontext;
background-color: buttonface;
border-color: buttonborder;
}

這里的buttontext、buttonface、buttonborder?就是系統顏色了,它會根據color-scheme自動適應深色模式。

圖片

這些系統顏色不僅僅可以用在表單元素上,也能用在普通元素上,比如這里取按鈕文本顏色buttontext。

div{
background-color: buttontext;
}

這個顏色會在深色模式下自動變成白色,如下:

圖片

如果手動的指定了一些正常顏色,那么也就失效了

button{
color: #333
}

圖片

所以,綜合上面所述,只有系統相關的樣式和顏色才可以受到color-scheme的影響。

完整的 CSS 系統顏色可以參考官方 MDN 文檔[3] ,比較有限,而且顏色都是那種黑白等高飽和度顏色,酌情使用。

三、color-scheme 和 prefers-color-scheme

相比color-scheme?,大家可能更熟悉prefers-color-scheme,它用于檢測用戶是否有將系統的主題色設置為亮色或者暗色。

.day   { background: #eee; color: black; }
.night { background: #333; color: white; }
@media (prefers-color-scheme: dark) {
.day.dark-scheme { background: #333; color: white; }
.night.dark-scheme { background: black; color: #ddd; }
}

那么,它和color-scheme有什么聯系呢?舉個例子。

:root{
color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
body {
color: red
}
}

請問,在淺色模式下,body 的顏色是什么?

下面來看實際結果:

圖片

只有當系統真正切換到深色模式,才會變成紅色。

圖片

所以結論是,color-scheme? 和 prefers-color-scheme?沒有必然聯系,并不會干涉prefers-color-scheme?的判斷,但是是相輔相成的,color-scheme? 可以更好的處理系統默認的一些樣式,而 prefers-color-scheme可以更方便的自定義其他普通樣式。

四、總結一下

綜上所述,為了更好的支持深色模式,可以在常規的深色模式下添加color-scheme作為兜底方案,可以很好的適配瀏覽器原生樣式。

:root{
color-scheme: light dark
}

這樣一個小知識點,學到了嗎?下面是本文要點總結。

  1. color-scheme 是原生支持的配色方案,支持“白天模式”和“夜間模式”,可以輕松地更改瀏覽器的默認配色方案。
  2. color-scheme 支持的對象有表單控件滾動條CSS 系統顏色。
  3. CSS 系統顏色指的是瀏覽器內置的顏色,這些顏色是動態的。
  4. 但是系統顏色比較有限,而且顏色都是那種黑白等高飽和度顏色,酌情使用。
  5. 媒體查詢 prefers-color-scheme 不會受到 color-scheme 的影響,只和系統設置有關。
  6. 平時使用中 color-scheme 和 prefers-color-scheme 需要相互配合, color-scheme 適配原生,prefers-color-scheme 適配自定義。

然后提一下兼容性,其實對版本要求還挺高的。

圖片image-20220706152054928

但是,這并不影響我在項目中使用。原因很簡單,這算得上是漸進增強的屬性,即使瀏覽器不支持,也不會對頁面造成什么影響,如果支持,體驗會更好。所以,趕緊使用起來吧,就一行代碼的事,無形之中提升了視覺體驗。

參考資料

?[1]color-scheme: https://developer.mozilla.org/zh-CN/docs/Web/CSS/color-scheme。

[2]CSS accent-color屬性簡介: https://www.zhangxinxu.com/wordpress/2022/03/css-accent-color/。

[3]MDN 文檔: https://developer.mozilla.org/zh-CN/docs/Web/CSS/color_value#%E7%B3%BB%E7%BB%9F%E9%A2%9C%E8%89%B2?。

責任編輯:姜華 來源: 前端偵探
相關推薦

2021-11-04 10:29:01

CSS前端

2023-07-27 10:42:45

必應聊天微軟

2019-05-29 10:16:47

iOS應用系統

2020-12-07 13:23:07

LibreOffice開源

2020-03-23 11:43:43

微信iOS 7.0.12深色模式

2022-03-25 09:45:40

GNOMEGNOME 42

2023-10-10 09:00:00

CSSJavaScript

2020-04-13 15:05:10

Ubuntu深色模式Ubuntu 20.0

2021-11-22 09:56:13

FedoraLinux

2022-09-16 07:33:52

瀏覽器深色模式Firefox

2023-06-26 09:16:34

CSScolor-mix

2019-04-16 09:47:42

iOS應用系統

2020-04-07 16:25:39

微信深色模式黑色模式

2021-04-02 17:05:43

Chrome瀏覽器Incognito

2022-11-08 11:39:34

Web瀏覽器深色模式

2021-12-08 11:21:37

Windows 11記事本微軟

2019-12-19 15:09:19

微信深色模式消息引用

2021-09-02 00:13:41

Windows 11Windows微軟

2019-06-18 09:28:34

iOS 13手機黑暗模式

2023-05-15 10:41:13

CSS深色模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费看av大片 | 国产中文 | 亚洲欧美日韩国产综合 | 毛片一区二区 | 亚洲精品在线观看网站 | 国际精品鲁一鲁一区二区小说 | 国产精品99久久免费观看 | 人人草天天草 | 天天爱爱网 | 日本精品一区二区在线观看 | www.色.com| 在线免费观看成人 | 欧美 日韩 视频 | av官网在线| 韩国毛片一区二区三区 | 日本精品在线播放 | 欧美性tv | jizz中国日本| 狠狠爱网址 | 中文字幕一区二区三区精彩视频 | 成人在线激情 | 99热成人在线 | 青青草精品视频 | 免费观看a级毛片在线播放 黄网站免费入口 | 成人中文网 | 自拍偷拍亚洲视频 | 91精品国产一区二区三区 | 日韩欧美亚洲一区 | 99亚洲精品视频 | 久久不射电影网 | 日韩一区二区三区视频在线观看 | 性色视频| 国产伦一区二区三区久久 | 国产视频综合 | 精品国产欧美日韩不卡在线观看 | 91欧美精品 | 亚洲码欧美码一区二区三区 | 久久新| 国产精品久久久 | 干一干操一操 | 玖玖爱365|