最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

prefers-color-scheme設(shè)置檢測系統(tǒng)主題色

 更新時間:2023年04月28日 15:01:56   作者:碼上花甲  
這篇文章主要為大家介紹了prefers-color-scheme設(shè)置檢測系統(tǒng)主題色實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

我們在訪問某個站點時,有時可能會發(fā)現(xiàn)這樣一種場景:該站點在白天訪問時,它是亮色主題;當(dāng)晚上訪問時,它就變成暗色主題了。而且這種主題的切換是自動的,他會隨系統(tǒng)主題變化而改變。如果我們要將這種功能應(yīng)用在自己站點上,該如何實現(xiàn)呢?

本文涉及三個相關(guān)知識點:

  • 設(shè)置主題色
  • 檢查主題色
  • 監(jiān)聽主題色變化

設(shè)置主題色

在 CSS 中,提供了一種設(shè)置系統(tǒng)主題色的媒體特性 prefers-color-scheme,該特性通常提供兩個值 lightdark。顧名思義,這兩個值一個代表 日間模式,一個表示 夜間模式。并且他們的兼容性也是最好的。

這里有一個簡單的例子,可以很方便的通過 CSS 實現(xiàn)系統(tǒng)主題色:

.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; }
}
@media (prefers-color-scheme: light) {
  .day.light-scheme   { background: white; color:  #555; }
  .night.light-scheme { background:  #eee; color: black; }
}

當(dāng)系統(tǒng)主題為日間模式時,會應(yīng)用上面的 light 主題樣式;當(dāng)系統(tǒng)主題為夜間模式時,會應(yīng)用上面的 dark 主題樣式。

實際開發(fā)中,我們會將項目用到的色值抽離出來作為全局的公共變量,方便我們對項目整體的色值管理。如:

:root {
  // Light Theme
  --PrimaryBackgroundColorLight: #f9f9f9;  
  --PageBackgroundColorLight: #efefef;
  --PrimaryColorLight: #34495e;
  --PrimaryActivedColorLight: #1890FF;
  // Dark Theme
  --PrimaryBackgroundColorDark: #293042;
  --PageBackgroundColorDark: #202634;
  --PrimaryColorDark: #c6cfd8;
  --PrimaryActivedColorDark: #1890FF;
}

我們定義好全局 CSS 變量后,在需要的地方直接引用即可:

.day.light {
  background-color: var(--PrimaryBackgroundColorLight);
}

檢測主題色

既然能通過 CSS 設(shè)置系統(tǒng)主題色,那 JS 肯定也有能力來檢測系統(tǒng)主題色。JS 提供了一個用于檢查媒體查詢的函數(shù) matchMedia,利用該函數(shù)能方便地檢查當(dāng)前系統(tǒng)主題色:

const themeMedia = window.matchMedia("(prefers-color-scheme: light)");
if (themeMedia.matches) {
  // 日間模式
} else {
  // 夜間模式
}

監(jiān)聽主題色變化

除了獲取當(dāng)前系統(tǒng)主題色,我們還能監(jiān)聽主題色的變化。

const themeMedia = window.matchMedia("(prefers-color-scheme: light)");
themeMedia.addListener(e => {
  if (e.matches) {
    console.log("light");
  } else {
    console.log("dark");
  }
});

通過上面提到的三個知識點,在自己站點實現(xiàn)主題色功能是綽綽有余的。像一些更豐富的多主題切換,雖然實現(xiàn)的方法不同,但思路基本都是類似的。總結(jié)起來就是開篇的三句話:如何設(shè)置主題、獲取當(dāng)前被應(yīng)用的主題以及監(jiān)聽主題的變更。

以上就是prefers-color-scheme設(shè)置檢測系統(tǒng)主題色的詳細(xì)內(nèi)容,更多關(guān)于prefers-color-scheme主題色的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring mvc 接收json對象

    Spring mvc 接收json對象

    這篇文章主要介紹了Spring mvc 接收json數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • javascript實現(xiàn)查找數(shù)組中最大值方法匯總

    javascript實現(xiàn)查找數(shù)組中最大值方法匯總

    本文給大家匯總了一下使用javascript實現(xiàn)查找數(shù)組中最大最小值的一些方法,非常的簡單實用,有需要的小伙伴可以來參考下。
    2016-02-02
  • layer彈出子iframe層父子頁面?zhèn)髦档膶崿F(xiàn)方法

    layer彈出子iframe層父子頁面?zhèn)髦档膶崿F(xiàn)方法

    這篇文章主要介紹了layer彈出子iframe層父子頁面?zhèn)髦档膶崿F(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • JavaScript實現(xiàn)的鼠標(biāo)跟隨特效示例【2則實例】

    JavaScript實現(xiàn)的鼠標(biāo)跟隨特效示例【2則實例】

    這篇文章主要介紹了JavaScript實現(xiàn)的鼠標(biāo)跟隨特效,結(jié)合2則實例形式分析了javascript針對鼠標(biāo)事件的響應(yīng)、計算、處理及頁面元素動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-12-12
  • 輕松掌握J(rèn)avaScript代理模式

    輕松掌握J(rèn)avaScript代理模式

    這篇文章主要幫助大家輕松掌握J(rèn)avaScript代理模式,什么是代理模式?代理的用途,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 基于JS實現(xiàn)導(dǎo)航條之調(diào)用網(wǎng)頁助手小精靈的方法

    基于JS實現(xiàn)導(dǎo)航條之調(diào)用網(wǎng)頁助手小精靈的方法

    在網(wǎng)站中加入網(wǎng)頁助手小精靈,當(dāng)用戶訪問網(wǎng)站時,向用戶問好,或是傳遞一些網(wǎng)站的重要信息,給用戶帶來極好的體驗感,那么基于js代碼是如何調(diào)用網(wǎng)頁助手小精靈的呢?下面跟著腳本之家小編一起學(xué)習(xí)吧
    2016-06-06
  • js實現(xiàn)文字截斷功能

    js實現(xiàn)文字截斷功能

    這篇文章主要為大家詳細(xì)介紹了js代碼如何實現(xiàn)文字截斷功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 由JavaScript技術(shù)實現(xiàn)的web小游戲(不含網(wǎng)游)

    由JavaScript技術(shù)實現(xiàn)的web小游戲(不含網(wǎng)游)

    伴隨Ajax與網(wǎng)頁游戲的崛起,曾幾何時JavaScript也成了游戲開發(fā)時可供選擇的技術(shù)之一,文本 僅列舉數(shù)項由JavaScript技術(shù)實現(xiàn)的web小游戲(不含網(wǎng)游),聊作參考之用。
    2010-06-06
  • PixiJS學(xué)習(xí)之Sprite類的使用詳解

    PixiJS學(xué)習(xí)之Sprite類的使用詳解

    Sprite 直譯為 “精靈”,是游戲開發(fā)中常見的術(shù)語,就是將一個角色的多個動作放到一個圖片里,通過裁剪局部區(qū)域得到當(dāng)前的角色狀態(tài)圖。本文主要介紹了PixiJS中Sprite類的使用,需要的可以參考一下
    2023-02-02
  • JS實現(xiàn)的base64加密、md5加密及sha1加密詳解

    JS實現(xiàn)的base64加密、md5加密及sha1加密詳解

    這篇文章主要介紹了JS實現(xiàn)的base64加密、md5加密及sha1加密的方法,結(jié)合實例形式詳細(xì)分析了JavaScript各種常見加密方法與實現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04

最新評論

定州市| 盘山县| 陆川县| 景洪市| 庆安县| 阳泉市| 高邑县| 庆阳市| 锡林郭勒盟| 耒阳市| 开封县| 芜湖市| 大港区| 龙胜| 称多县| 子洲县| 阿克陶县| 大庆市| 新营市| 乐业县| 普陀区| 靖边县| 桦川县| 玛多县| 瑞金市| 班戈县| 商城县| 斗六市| 莱阳市| 杂多县| 鄂伦春自治旗| 格尔木市| 鹤壁市| 沾益县| 苗栗县| 湖南省| 乌什县| 灵丘县| 永州市| 西藏| 闽侯县|