在現今的數位時代,眾多的網站和手機應用程序均已將深色與淺色模式切換視為基本必要功能。此功能不僅保護使用者的視力,也能有效節省電能且顧及個人喜好,進而提升整體的使用者體驗。本文旨在詳細指導如何運用CSS在網頁中實現此種主題切換,以供初學者參考。
當用戶訪問網站時,首頁展示的界面多半是根據其系統偏好設定所決定。若使用者的作業系統或瀏覽器預設為深色模式,相應的,網頁亦會以深色模式呈現。此行為意在初始階段即符合使用者的喜好,進一步減少視疲勞,為他們帶來更加舒適的瀏覽體驗。為了達到此目的,我們需使用CSS特有的媒體查詢功能 prefers-color-scheme
。
prefers-color-scheme
?prefers-color-scheme
是一個用於檢測使用者在系統設定中的顏色主題偏好(如:深色或淺色模式)的CSS媒體查詢功能。
no-preference
: 當使用者系統沒有特定主題喜好時。light
: 適用於淺色模式偏好。dark
: 適用於深色模式偏好。1. 預設淺色模式樣式
:root {
--primary-font-color: #111827;
--secondary-font-color: #374151;
--bg-color: #f9f9f9;
}
:root
在CSS中代表文件的最上層元素,通常用於設定整個網頁的基礎值。--primary-font-color
、--secondary-font-color
和 --bg-color
是CSS變量,用於儲存整個網頁所需的顏色值。2. 深色模式偏好時的樣式設定
@media (prefers-color-scheme: dark) {
:root {
--primary-font-color: #ffffff;
--secondary-font-color: #d1d5db;
--bg-color: #181818;
}
}
@media (prefers-color-scheme: dark)
是一媒體查詢,只在使用者的作業系統或瀏覽器偏好為深色模式時套用其樣式。透過上述的CSS程式碼,可以依據使用者的系統設定自動切換深、淺色模式。當使用者選擇深色模式偏好時,深色模式的樣式才會被啟用,反之,預設則會啟用淺色模式。
prefers-color-scheme
,因此在實施時需考慮到相容性問題。網頁最初根據使用者的系統設定來設定模式,但使用者可能會根據自己的喜好調整模式。例如,基於周圍環境或特定任務,滿足使用者從深色模式和亮色模式之間切換的需求是至關重要的。此種基於使用者選擇的主題切換功能增強了網頁的靈活性,並提供了更個性化的體驗。這需要結合HTML、CSS及JavaScript來實現。
1. HTML: 新增模式切換按鈕 於網頁加入能切換深色模式及亮色模式的按鈕或切換開關。
<button id="themeToggle">Dark Mode</button>
2. 預設與亮色模式樣式
:root
表示CSS中的最頂層元素。通過在此定義變數,可以設定整個頁面的基礎樣式。[data-theme='light']
表示data-theme
屬性值為'light'的元素樣式。:root,
[data-theme='light'] {
--primary-font-color: #111827;
--secondary-font-color: #374151;
--bg-color: #f9f9f9;
--divider-color: rgba(0, 0, 0, 0.1);
}
3. 深色模式樣式
[data-theme='dark']
表示data-theme
屬性值為'dark'的元素樣式。[data-theme='dark'] {
--primary-font-color: #ffffff;
--secondary-font-color: #d1d5db;
--bg-color: #181818;
--divider-color: rgba(255, 255, 255, 0.1);
}
4. JavaScript: 實施模式切換邏輯 按下按鈕時,利用JavaScript實現網頁主題的切換。
const themeToggleButton = document.getElementById('themeToggle');
themeToggleButton.addEventListener('click', function() {
const currentTheme = document.documentElement.getAttribute('data-theme');
if (currentTheme === 'dark') {
document.documentElement.setAttribute('data-theme', 'light');
themeToggleButton.innerText = 'Dark Mode';
} else {
document.documentElement.setAttribute('data-theme', 'dark');
themeToggleButton.innerText = 'Light Mode';
}
});
如此設定後,當使用者點擊「深色模式」按鈕,網頁主題會切換到深色模式。反之,於深色模式下點擊「亮色模式」按鈕會切換到亮色模式。
在網頁中,深色與亮色模式的切換是增強使用者體驗的重要功能之一。希望透過此文,讓讀者對這功能的實施方法有基礎的了解。即使是網頁開發新手,遵循這些指引也能有效地於網頁中新增主題切換功能。
[CSS] 實現暗黑模式 - 系統配置和用戶選擇模式切換 |
---|
[CSS] 虛擬選擇器(Pseudo selector) 完美指南 - 必須知道的樣式技術 |
比較 JavaScript 和 CSS 動畫 |
[CSS] 使用:not()選擇器排除多個類別 |
[CSS] 你必須知道的10個CSS基本語法! |
CloneCoding
創新從一行代碼開始!