欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

html使用JavaScript + CSS實(shí)現(xiàn)亮色和暗色切換功能

 更新時(shí)間:2025年07月19日 09:16:16   作者:代碼保安  
文章介紹了使用JavaScript和CSS實(shí)現(xiàn)代理模式切換的方法,包含定義兩種主題樣式、動(dòng)態(tài)修改class/data-theme屬性、通過localStorage保存用戶偏好,并提供媒體查詢和動(dòng)畫優(yōu)化等進(jìn)階建議,實(shí)現(xiàn)兼容性好且用戶體驗(yàn)友好的主題切換功能

實(shí)現(xiàn)一個(gè)黑暗模式切換功能是現(xiàn)代網(wǎng)頁(yè)設(shè)計(jì)中常見的需求。下面是一個(gè)完整的示例,展示如何使用 JavaScript + CSS 來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的“黑暗模式”切換按鈕。

? 實(shí)現(xiàn)思路

  1. 使用 CSS 定義兩種主題樣式(亮色和暗色)。
  2. 通過 JavaScript 動(dòng)態(tài)切換 HTML 元素的 classdata-theme 屬性。
  3. 使用 localStorage 保存用戶選擇的主題偏好。

?? 示例代碼

?? HTML 部分

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>黑暗模式切換</title>
  <link rel="stylesheet" href="styles.css" rel="external nofollow"  />
</head>
<body>
  歡迎來(lái)到我的網(wǎng)站
  <p>這是一個(gè)可以切換黑暗模式的頁(yè)面。</p>
  <button id="toggleThemeBtn">切換到暗色模式</button>

  <script src="script.js"></script>
</body>
</html>

?? CSS 部分 (styles.css)

/* 默認(rèn)亮色主題 */
body {
  background-color: #ffffff;
  color: #000000;
  transition: background-color 0.3s, color 0.3s;
}

/* 暗色主題樣式 */
.dark-mode {
  background-color: #121212;
  color: #ffffff;
}

?? JavaScript 部分 (script.js)

const toggleButton = document.getElementById("toggleThemeBtn");

// 頁(yè)面加載時(shí)檢查 localStorage 中是否有之前保存的主題
if (localStorage.getItem("theme") === "dark") {
  document.body.classList.add("dark-mode");
  toggleButton.textContent = "切換到亮色模式";
}

// 切換主題函數(shù)
toggleButton.addEventListener("click", () => {
  document.body.classList.toggle("dark-mode");

  // 修改按鈕文字
  if (document.body.classList.contains("dark-mode")) {
    toggleButton.textContent = "切換到亮色模式";
    localStorage.setItem("theme", "dark");
  } else {
    toggleButton.textContent = "切換到暗色模式";
    localStorage.setItem("theme", "light");
  }
});

?? 進(jìn)階優(yōu)化建議

  • 使用 prefers-color-scheme: dark 媒體查詢來(lái)自動(dòng)匹配系統(tǒng)設(shè)置:

    @media (prefers-color-scheme: dark) {
      body:not(.dark-mode) {
        background-color: #121212;
        color: #ffffff;
      }
    }
    
  • 使用 data-theme="dark" 而不是 class,更語(yǔ)義化地控制主題。

  • 可以封裝為可復(fù)用組件或 React/Vue 插件。

  • 添加動(dòng)畫過渡效果提升用戶體驗(yàn)。

完整示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>黑暗模式切換</title>
<style>
	/* 默認(rèn)亮色主題 */
body {
  background-color: #ffffff;
  color: #000000;
  transition: background-color 0.3s, color 0.3s;
}

/* 暗色主題樣式 */
.dark-mode {
  background-color: #121212;
  color: #ffffff;
}
@media (prefers-color-scheme: dark) {
  body:not(.dark-mode) {
    background-color: #121212;
    color: #ffffff;
  }
}
</style>
</head>
<body>
  歡迎來(lái)到我的網(wǎng)站
  <p>這是一個(gè)可以切換黑暗模式的頁(yè)面。</p>
  <button id="toggleThemeBtn">切換到暗色模式</button>

<script>
const toggleButton = document.getElementById("toggleThemeBtn");

// 頁(yè)面加載時(shí)檢查 localStorage 中是否有之前保存的主題
if (localStorage.getItem("theme") === "dark") {
  document.body.classList.add("dark-mode");
  toggleButton.textContent = "切換到亮色模式";
}

// 切換主題函數(shù)
toggleButton.addEventListener("click", () => {
  document.body.classList.toggle("dark-mode");

  // 修改按鈕文字
  if (document.body.classList.contains("dark-mode")) {
    toggleButton.textContent = "切換到亮色模式";
    localStorage.setItem("theme", "dark");
  } else {
    toggleButton.textContent = "切換到暗色模式";
    localStorage.setItem("theme", "light");
  }
});
</script>
</body>
</html>

? 總結(jié)

你現(xiàn)在已經(jīng)掌握了一個(gè)基礎(chǔ)但實(shí)用的黑暗模式切換功能實(shí)現(xiàn)方式:

  • 用 CSS 定義樣式;
  • 用 JS 控制類名切換;
  • 用 localStorage 保存用戶偏好;
  • 用戶體驗(yàn)友好,兼容性好。

到此這篇關(guān)于html使用JavaScript + CSS實(shí)現(xiàn)亮色和暗色切換功能的文章就介紹到這了,更多相關(guān)JavaScript和CSS實(shí)現(xiàn)html明暗切換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序開發(fā)經(jīng)驗(yàn)總結(jié)(推薦)

    微信小程序開發(fā)經(jīng)驗(yàn)總結(jié)(推薦)

    本篇文章主要介紹了微信小程序開發(fā)經(jīng)驗(yàn)總結(jié)(推薦),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-01-01
  • JS實(shí)現(xiàn)動(dòng)態(tài)倒計(jì)時(shí)功能(天數(shù)、時(shí)、分、秒)

    JS實(shí)現(xiàn)動(dòng)態(tài)倒計(jì)時(shí)功能(天數(shù)、時(shí)、分、秒)

    這篇文章主要介紹了JS實(shí)現(xiàn)動(dòng)態(tài)倒計(jì)時(shí)功能詳解(天數(shù)、時(shí)、分、秒),需要的朋友可以參考下
    2019-12-12
  • Javascript原型鏈及instanceof原理詳解

    Javascript原型鏈及instanceof原理詳解

    這篇文章主要介紹了Javascript原型鏈及instanceof原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 基于node.js的快速開發(fā)透明代理

    基于node.js的快速開發(fā)透明代理

    服務(wù)器端js(Server-Side Javascrpt)很早也就有了,JAVA中也有javascript 的script引擎。
    2010-12-12
  • 基于javascript實(shí)現(xiàn)圖片左右切換效果

    基于javascript實(shí)現(xiàn)圖片左右切換效果

    這篇文章主要為大家介紹了基于javascript實(shí)現(xiàn)圖片左右切換效果,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 怎樣用Javascript實(shí)現(xiàn)策略模式

    怎樣用Javascript實(shí)現(xiàn)策略模式

    這篇文章主要介紹了JavaScript設(shè)計(jì)模式之策略模式,想學(xué)習(xí)設(shè)計(jì)模式的同學(xué),一定要看一下
    2021-04-04
  • js代碼實(shí)現(xiàn)多人聊天室

    js代碼實(shí)現(xiàn)多人聊天室

    這篇文章主要為大家詳細(xì)介紹了js代碼實(shí)現(xiàn)多人聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • javascript中定義私有方法說明(private method)

    javascript中定義私有方法說明(private method)

    本篇文章主要是對(duì)javascript中定義私有方法(private method)進(jìn)行了介紹,需要的朋友可以過來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • 微信小程序多表聯(lián)合查詢的實(shí)現(xiàn)詳解

    微信小程序多表聯(lián)合查詢的實(shí)現(xiàn)詳解

    小程序設(shè)計(jì)中,通常會(huì)根據(jù)業(yè)務(wù)來(lái)做多表的拆分,多表拆分一般是根據(jù)業(yè)務(wù)的特點(diǎn)進(jìn)行拆分。比如我們?cè)谖恼玛P(guān)注的業(yè)務(wù)中,會(huì)將文章和關(guān)注信息拆分成一對(duì)多的表關(guān)系。初學(xué)者可能對(duì)一對(duì)一、一對(duì)多、多對(duì)多的設(shè)計(jì)概念不是特別清楚
    2022-08-08
  • js/jQuery對(duì)象互轉(zhuǎn)(快速操作dom元素)

    js/jQuery對(duì)象互轉(zhuǎn)(快速操作dom元素)

    在操作js或者jquery方面相關(guān)的元素時(shí),可能會(huì)力不從心,因?yàn)樵谑褂梅椒〞r(shí)可能js的會(huì)更好一點(diǎn)又或者jquery的會(huì)更好一點(diǎn),真是無(wú)從選擇啊,接下來(lái)將介紹JS/jQuery對(duì)象互轉(zhuǎn)實(shí)現(xiàn),方便你快速操作dom元素,感興趣的朋友可以了解下啊
    2013-02-02

最新評(píng)論