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

2024 啦,我們終于能用 CSS 一行代碼實現暗黑模式了!

開發 前端
說起主題切換,很多同學肯定是不陌生的。在過去我的很多課程中都講到了主題切換的功能。它的實現原理簡單一句話描述就是:通過不同的狀態標記(light || dark),使用不同的 css,從而達到不同的樣式。

Hello,大家好,我是 Sunday。

說起主題切換,很多同學肯定是不陌生的。在過去我的很多課程中都講到了主題切換的功能。它的實現原理簡單一句話描述就是:通過不同的狀態標記(light || dark),使用不同的 css,從而達到不同的樣式。

如果使用 原生 css 實現的話,那么則需要借助 @media (prefers-color-scheme: <value>),代碼大概是這樣的:

@media (prefers-color-scheme: dark) {
  body {
    color: #fff;
    background-color: #222;
  }
}

@media (prefers-color-scheme: light) {
  body {
    color: #333;
    background-color: #fff;
  }
}

這樣的代碼標記著我們需要在 dark 模式下指定一套 css,然后在 light 模式下指定另外一套 css。雖然可以實現主題切換的功能,但它的缺點也很明顯:

  • 代碼冗長:需要為每個模式定義單獨的樣式塊。
  • 維護困難:當項目中有大量深淺模式樣式時,修改和擴展變得復雜。

因此,這種方式并不被我們所喜歡(大家在工作中應該也很少見這樣的代碼),導致我們更多的時候會使用一些庫(如:tailwindcss)來實現主題切換。

但是,隨著一個全新的 css 屬性函數 light-dark(),一切不一樣了!

圖片圖片

1. 什么是 light-dark()?

1.1 基本特性

light-dark() 是一種新的 CSS 屬性值函數,用于在 淺色模式 和 深色模式 下分別指定不同的樣式值。

以往我們需要使用 @media (prefers-color-scheme) 媒體查詢來處理深淺模式,代碼量大且重復。而 light-dark() 通過一個簡單的函數調用,直接在單條樣式規則中定義深淺模式的不同表現,大大簡化了開發工作。

// <light-value> 淺色模式下的樣式值。
// <dark-value> 深色模式下的樣式值。
property: light-dark(<light-value>, <dark-value>);

以設置背景色 + 字體顏色為例,light-dark() 可以輕松在淺色和深色模式之間切換:

// 在淺色模式下,背景色為白色(#ffffff),字體為黑色(#333333)
// 在深色模式下,背景色為深灰色(#1e1e1e),字體為白色(#f0f0f0)
body {
  background-color: light-dark(#ffffff, #1e1e1e);
  color: light-dark(#333333, #f0f0f0);
}

是不是賊簡單了!對比下傳統的 @media (prefers-color-scheme: <value>) 的方式,就更能體現出差異了

// 傳統的 @media (prefers-color-scheme: ...) 方案
@media (prefers-color-scheme: dark) {
  body {
    color: #1e1e1e;
    background-color: #f0f0f0;
  }
}

@media (prefers-color-scheme: light) {
  body {
    color: #ffffff;
    background-color: #333333;
  }
}

1.2 進階用法

除了剛才的基本使用方式之外,light-dark() 還可以與 CSS 變量結合,動態定義深淺模式下的值:

:root {
  --bg-color: light-dark(#ffffff, #1e1e1e);
  --text-color: light-dark(#333333, #f0f0f0);
}

body {
  background-color: var(--bg-color);
  color: var(--text-color);
}

通過這種方式,可以輕松實現主題切換的全局樣式管理。

2. light-dark() 的兼容性

截至目前(2024年11月),light-dark() 的瀏覽器支持場景如下:

圖片圖片

根據 mdn 的數據,可以看到目前大部分的瀏覽器都支持了 light-dark() 屬性。

如果你的項目使用場景包含舊版本的瀏覽器,那么可以添加如下兼容方案:

body {
  background-color: #ffffff; /* 默認值 */
  background-color: light-dark(#ffffff, #1e1e1e);
}

責任編輯:武曉燕 來源: 程序員Sunday
相關推薦

2025-05-16 11:44:43

CSS模式樣式

2023-05-15 10:41:13

CSS深色模式

2022-04-09 09:11:33

Python

2020-08-19 10:30:25

代碼Python多線程

2025-04-21 10:43:21

2016-12-02 08:53:18

Python一行代碼

2021-02-24 14:30:59

JavaScript語言開發

2024-12-12 08:55:25

CSS代碼模式

2020-03-05 18:40:06

iPhone安卓Android 10

2024-12-03 09:23:20

2022-05-03 17:04:08

CSS前端

2014-02-12 13:43:50

代碼并行任務

2017-04-05 11:10:23

Javascript代碼前端

2025-01-20 08:35:53

2024-11-08 17:22:22

2021-09-13 10:43:12

開發CSS代碼

2020-12-17 08:06:33

CSS 日歷界面

2024-02-20 12:49:00

CSS函數前端

2015-12-15 10:32:44

chromecss開發

2021-08-31 09:49:37

CPU執行語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久国产精品一区二区 | 亚洲成人国产精品 | 亚洲激情第一页 | 欧美a在线看 | 91社区在线观看播放 | 国产一二三区电影 | 成人国产免费视频 | 欧美精品一区二区免费视频 | 亚洲午夜精品一区二区三区 | 成人国产精品一级毛片视频毛片 | 国产在线观看一区二区三区 | 久草在线在线精品观看 | 日本久久网 | 久久久久久综合 | 欧美激情99 | 国产精品视频在 | 天天躁日日躁狠狠的躁天龙影院 | 妞干网视频 | 久久久精品综合 | 欧美a级成人淫片免费看 | 日韩欧美一区在线 | 91精品国产乱码久久久久久久久 | 日韩视频在线播放 | 成年人黄色一级毛片 | 91国在线| 日韩欧美高清dvd碟片 | 国产精品欧美精品 | 国产精品久久久久久亚洲调教 | 日韩中文字幕在线观看 | 91麻豆精品一区二区三区 | 国产精品成人一区二区三区 | 亚洲大片在线观看 | 91精品国产91久久久久青草 | 一级片在线观看 | 91网站在线播放 | 成人一级视频在线观看 | 国产无套一区二区三区久久 | 欧美日韩国产三级 | 国产最新视频在线 | 成人精品视频 | www.国产 |