好吧..牽涉到一點CSS?但它比我在網路上找到的答案要容易得多。
我想要實現什麼?
我試圖用這種方法實現兩件事。
因此,我們將擁有一個網站,該網站將加載用戶期望的主題,然後允許他們在需要時進行更改。
第 1 步:建立用於切換的按鈕
我使用一個圖像作為我的按鈕,其中有一個月亮的 svg 圖像。您可以新增您感覺可以在兩個選項之間切換的按鈕或複選框。
第 2 步:將顏色詳細資訊作為自訂屬性放入 CSS 中
:root{ color-scheme: light dark; --light-bg: ghostwhite; --light-color: darkslategray; --light-code: tomato; --dark-bg: darkslategray; --dark-color: ghostwhite; --dark-code: gold; } .light{ color-scheme: light; } .dark{ color-scheme: dark; }
好吧..所以在根中你會看到名為 color-scheme 的屬性,這將成為我們的遊戲規則改變者。
正如您所看到的,它需要淺色或深色的值。我還創建了兩個類別 .light 和 .dark,將顏色方案的值設為深色或淺色。
第 3 步:為程式碼的各個部分加上顏色
body{ background-color: light-dark(var(--light-bg), var(--dark-bg)); }
現在每當屬性要求顏色(如背景、顏色屬性)時,您可以使用名為 light-dark() 的函數。
此函數有兩個值,第一個值在顏色方案設定為淺色時使用,第二個值在顏色方案設定為深色時使用。
是的...這是2024年5月發布的功能。它相當新,但很快就會適應。截至撰寫本文時,它處於基線支援中。這是它的文檔
如果您使用此功能,CSS 將自動從作業系統偵測使用者首選項並將其設定為他們想要的顏色。
我們實現了第一個目標,網站將載入用戶作業系統中已經想要的顏色模式。
第 4 步:使用 Javascript 在深色模式和淺色模式之間切換
// mode is the toggle button mode.addEventListener("click", ()=>{ // we are getting the color scheme here let theme = document.documentElement.style.colorScheme; /* when a website is first loaded it will have null as its color-scheme value*/ if(theme == null){ // this window.matchMedia() checks if the user prefers the dark theme if(window.matchMedia("(prefers-color-scheme:dark)").matches){ /* if they prefer dark, clicking on our button should turn everything to light, the color-scheme will be given a value as light */ document.documentElement.style.colorScheme = "light"; } // Or else the color-scheme will be set to dark document.documentElement.style.colorScheme = "dark"; } /* Now since our toggle button set the color scheme, we can simply change light to dark and dark to light using below code */ else{ document.documentElement.style.colorScheme = (theme == "light")? "dark": "light"; } });
這裡,document.documentElement.style.colorScheme實際上引用了CSS中的:root元素。
由於我們在上一個步驟中已經實現了以使用者首選模式開啟網站,因此當單擊切換按鈕時,它會執行以下操作。
*PS:*這是我的第一篇文章,我仍然是網頁開發的初學者。但當我搜尋這個方法時,並沒有看到任何相關的貼文。如果您已經知道這一點,我很抱歉點擊誘餌您?我認為這篇文章將幫助我在每次開發新專案時記住這個過程。
如果您正在努力讓您的網站在舊瀏覽器上運行,那麼此方法絕對不適合您。在關於這篇文章的評論中告訴我。感謝您的閱讀。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3