輕松搞定一鍵切換主題色?分享 1 段優質 CSS 代碼片段!

本內容首發于工粽號:程序員大澈,每日分享一段優質代碼片段,歡迎關注和投稿!

大家好,我是大澈!

本文約?800+?字,整篇閱讀約需?1?分鐘。

今天分享一段優質 CSS 代碼片段,輕松實現一鍵切換主題顏色,在任何項目中都可用。

老規矩,先閱讀代碼片段并思考,再看代碼解析再思考,最后評論區留下你的見解!

[data-theme='default']?{--font-primary:?#fff;--background-main:?#0678be;
}[data-theme='black']?{--font-primary:?#fff;--background-main:?#393939;
}<html?lang="en"?data-theme="default"></html>body?{color:?var(--font-primary);background-color:?var(--background-main);
}

分享原因

這段代碼可以輕松實現網頁主題的切換,且在各種項目中通用。

先定義不同主題的 CSS 變量,再通過 JavaScript 動態更改 data-theme 屬性,從而實現頁面樣式的動態變化。

這種方法不僅簡化了主題管理,還提高了代碼的可讀性和維護性,是我們項目中一般且常用的實現方式之一。

代碼解析

1.?定義主題變量

CSS變量:聲明自定義CSS屬性,它包含的值可以在整個文檔中重復使用。屬性名需要以兩個減號(--)開始,屬性值則可以是任何有效的 CSS 值。

CSS屬性選擇器:匹配具有特定屬性或屬性值的元素。例如[data-theme='black'],將選擇所有 data-theme 屬性值為 'black' 的元素。

使用 [data-theme='default'] 和 [data-theme='black'] 選擇器,根據 data-theme 屬性的值定義不同的主題樣式。

定義了兩個 CSS 變量 --font-primary 和 --background-main,分別表示字體顏色和背景顏色。

2.?指定默認主題

在?<html>?元素上添加?data-theme="default",指定默認主題為?default 。

后面用 js 動態切換 data-theme 屬性值,然后 CSS 屬性選擇器將自動選擇對應的 CSS 變量。

3. 應用 CSS 變量

Var函數:用于使用 CSS 變量。第一個參數為 CSS 變量名稱,第二個可選參數作為默認值。

使用 var(--font-primary) 和 var(--background-main) 來引用之前定義的 CSS 變量。

這里設置 body 元素的 color 和 background-color 屬性,分別引用 --font-primary 和 --background-main 變量,在項目中按需設置對應的元素即可。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/46428.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/46428.shtml
英文地址,請注明出處:http://en.pswp.cn/web/46428.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

4.3 最小二乘近似

一、最小二乘解 A x b A\boldsymbol x\boldsymbol b Axb 經常無解&#xff0c;一般是因為方程太多了。矩陣 A A A 的行比列要多&#xff0c;即方程要多余未知數&#xff08; m > n m>n m>n&#xff09;。 n n n 個列只能張成 m m m 空間的一小部分&#xff0c;除非…

spring中的依賴注入

文章目錄 spring中的依賴注入一、Autowired二、Qualifier三、Resource四、總結 spring中的依賴注入 這里主要講述三個注解裝配 一、Autowired 作用&#xff1a;自動按照類型注入。只要容器中唯一的一個bean對象類型和要注入的變量類型匹配&#xff0c;就可以注入成功。 如果i…

MySQL5.7社區版本在CentOS7系統上的安裝

MySQL5.7社區版本在CentOS7系統上的安裝 1.配合yum倉庫 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm 2.使用yum安裝MySQL5.7 yum -y install mysql-community-server 3.安裝…

面向鐵路、地鐵旅客信息系統(PIS)的上架型整機,鐵路專用M12網絡接口,滿足歐洲鐵路應用標準

上架型整機 2U 19寸上架型整機&#xff0c;采用高性能低功耗處理器&#xff0c;能應用在寬溫環境下&#xff0c;并滿足歐洲鐵路應用標準EN50155關于電磁兼容性&#xff0c;沖擊和振動測試試驗的要求&#xff0c;是一款面向鐵路、地鐵旅客信息系統&#xff08;PIS&#xff09;的…

C# 關于 PaddleOCRSharp OCR識別的疲勞測試

目錄 關于 PaddleOCRSharp 應用范例演示 ?范例運行環境 疲勞測試 添加組件庫 方法設計 調用示例 小結 關于 PaddleOCRSharp PaddleOCRSharp 是百度飛槳封裝的.NET版本 OCR dll 類庫&#xff0c;OCR&#xff08;Optical Character Recognition&#xff09;工具可以將…

【Java面向對象】抽象類和接口

文章目錄 1.抽象類2.常見的抽象類2.1 Number類2.2 Calendar 和GregorianCalendar 3.接口4.常見接口4.1 Comparable 接口4.2 Cloneable 接口4.3 深淺拷貝 5.類的設計原則 1.抽象類 在繼承的層次結構中&#xff0c;每個新的子類都使類變得更加明確和具體。如果從一個子類向父類追…

Unty 崩潰問題(Burst 1.8.2)

錯誤代碼&#xff1a; Assertion failed on expression: exception SCRIPTING_NULL UnityEngine.StackTraceUtility:ExtractStackTrace () Unity.Burst.BurstCompiler:SendRawCommandToCompiler (string Unity版本&#xff1a;2021.3.17F1&#xff0c;Burst 1.8.2 表現&…

python安裝talib庫教程

【talib介紹】 Talib介紹 Talib&#xff0c;全稱“Technical Analysis Library”&#xff0c;即技術分析庫&#xff0c;是一個廣泛應用于金融量化領域的Python庫。該庫由C語言編寫&#xff0c;支持Python調用&#xff0c;為投資者、交易員和數據分析師提供了強大的技術分析工…

酷炫末世意境背景404單頁HTML源碼

源碼介紹 酷炫末世意境背景404單頁HTML源碼&#xff0c;背景充滿著破壞一切的意境&#xff0c;彷佛末世的到來&#xff0c;可以做網站錯誤頁或者丟失頁面&#xff0c;將下面的代碼放到空白的HTML里面&#xff0c;然后上傳到服務器里面&#xff0c;設置好重定向即可 效果預覽 …

餐邊柜不踩坑的尺寸和做法

大家問餐邊柜怎么做好看不踩坑      十做十不做,有尺寸和總結      1,柜子的深度30和35cm就行,低于30太窄放不了東西      高于35餐廳會顯得窄,      2,鏤空的地方一定要做背板,      3,柜子不用裝修反彈器,也不做拉手,一個容易壞,一個不好看      建議…

論文學習——基于自適應選擇的動態多目標進化優化有效響應策略

論文題目&#xff1a;Effective response strategies based on adaptive selection for dynamic multi-objective evolutionary optimization 基于自適應選擇的動態多目標進化優化有效響應策略&#xff08;Xiaoli Li a,b,c, Anran Cao a,?, Kang Wang a&#xff09;Applied S…

零基礎STM32單片機編程入門(十五) DHT11溫濕度傳感器模塊實戰含源碼

文章目錄 一.概要二.DHT11主要性能參數三.DHT11溫度傳感器內部框圖四.DTH11模塊原理圖五.DHT11模塊跟單片機板子接線和通訊時序1.單片機跟DHT11模塊連接示意圖2.單片機跟DHT11模塊通訊流程與時序 六.STM32單片機DHT11溫度傳感器實驗七.CubeMX工程源代碼下載八.小結 一.概要 DH…

App Inventor 2 天氣預報App開發 - 第三方API接入的通用方法(2)

本文來自AppInventor2中文網&#xff08;www.fun123.cn&#xff09;參考文檔&#xff0c;調用第三方天氣接口獲取天氣JSON數據&#xff0c;解析并展示在App上。 App效果圖&#xff0c;展示未來7日的天氣預報&#xff0c;包括日期、天氣圖示和溫度&#xff1a; App原理介紹 通…

Linux/Windows 系統分區

1. Windows 系統 1.1 系統分區 系統分區也叫做磁盤分區&#xff0c;即分盤&#xff1b; 舉個例子&#xff0c;好比家里有一個大柜子&#xff0c;把衣服&#xff0c;鞋子&#xff0c;襪子都放在里面&#xff0c;由于沒有隔斷&#xff0c;找的時候非常麻煩&#xff0c;找是能找…

C++ Primer:3.2 標準庫類型string

其他章節&#xff1a;C Primer 學習心得 標準庫類型string表示可變長的字符序列&#xff0c;使用string類型必須首先頭文件&#xff0c;string定義在命名空間std中 #include <string> using std::string定義和初始化string對象 初始化類的對象是由類本身決定的&#x…

借力Jersey,鑄就卓越RESTful API體驗

目錄 maven 創建 jersey 項目 運行 支持返回 json 數據對象 1. 引言 在當今數字化時代&#xff0c;API&#xff08;應用程序編程接口&#xff09;已成為連接不同軟件系統和服務的橋梁。RESTful API以其簡潔、輕量級和易于理解的特點&#xff0c;成為了API設計的首選標準。本…

Hive函數之-posexplode()

1、概念描述&#xff1a; posexplode() 是一個內建函數&#xff0c;用于處理數組數據&#xff0c;并將數組的每個元素及其索引&#xff08;位置&#xff09;轉換為兩列的表格式數據。posexplode() 函數對于處理需要元素位置信息的數組特別有用。pos就是postion的縮寫&#xff…

Windows雙網卡上網原理以及配置方法

目錄 1. 背景 2. IP路由原理 3. windows雙網卡上網解決方案 3.1. 基礎配置解決方案 3.2. 高階配置解決方案 1. 背景 在windwos上使用多網卡在工作和生活中是一個常見的操作&#xff0c;比如為了獲取內部消息將有線連接到內部局域網中&#xff0c;為而了訪問外網又將電腦的…

華為云GaussDB部署指南:主備架構的常見問題與解決方案

文章目錄 華為云GaussDB部署指南&#xff1a;主備架構的常見問題與解決方案背景介紹部署步驟1.修改主機名2.軟件安裝檢查3.禁用交換內存4.創建數據目錄并掛載5.配置NTP時鐘同步6.添加資源限制參數7.修改網卡的MTU8.上傳安裝工具包9.編輯集群配置文件10.修改集群安裝模板11.安裝…

木舟0基礎學習Java的第二十天(線程,實現,匿名有名,休眠,守護,加入,設計,計時器,通信)

多線程 并發執行的技術 并發和并行 并發&#xff1a;同一時間 有多個指令 在單個CPU上 交替執行 并行&#xff1a;同一時間 有多個指令 在多個CPU上 執行 進程和線程 進程&#xff1a;獨立運行 任何進程 都可以同其他進程一起 并發執行 線程&#xff1a;是進程中的單個順…