使用 CSS 设计样式

接下来,我们将为深色和浅色模式定义样式。我们将使用 CSS 变量来更轻松地切换主题。

/* styles.css */:root {    --bg-color: #ffffff;    --text-color: #000000;    --button-bg-color: #000000;    --button-text-color: #ffffff;}body {    background-color: var(--bg-color);    color: var(--text-color);    font-family: Arial, sans-serif;    transition: background-color 0.3s ease, color 0.3s ease;}.container {    text-align: center;    margin-top: 50px;}button {    background-color: var(--button-bg-color);    color: var(--button-text-color);    border: none;    padding: 10px 20px;    cursor: pointer;    transition: background-color 0.3s ease, color 0.3s ease;}button:hover {    opacity: 0.8;}body.dark-mode {    --bg-color: #333333;    --text-color: #ffffff;    --button-bg-color: #ffffff;    --button-text-color: #000000;}

添加 JavaScript 功能

现在,我们将添加 JavaScript 来处理主题切换。我们还将在 localStorage 中保存用户的首选项,以便他们的选择在整个会话中保持不变。

// script.jsdocument.addEventListener(\\'DOMContentLoaded\\', () => {    const switcher = document.getElementById(\\'modeSwitcher\\');    const currentMode = localStorage.getItem(\\'theme\\') || \\'light\\';    if (currentMode === \\'dark\\') {        document.body.classList.add(\\'dark-mode\\');        switcher.textContent = \\'Switch to Light Mode\\';    }    switcher.addEventListener(\\'click\\', () => {        document.body.classList.toggle(\\'dark-mode\\');        const mode = document.body.classList.contains(\\'dark-mode\\') ? \\'dark\\' : \\'light\\';        switcher.textContent = mode === \\'dark\\' ? \\'Switch to Light Mode\\' : \\'Switch to Dark Mode\\';        localStorage.setItem(\\'theme\\', mode);    });});

解释

1。 CSS 变量: 我们使用 CSS 变量来定义两种模式的颜色,以便在它们之间轻松切换。

2. JavaScript: 我们向按钮添加一个事件侦听器,以切换 body 元素上的暗模式类。我们还根据当前模式更新按钮文本并将模式保存在 localStorage 中。

3.持久主题: 当页面加载时,我们检查 localStorage 以了解用户的偏好并应用适当的主题。

结论

实现暗/亮模式切换器通过提供满足不同偏好和条件的视觉选项来增强用户体验。只需几行 HTML、CSS 和 JavaScript,您就可以将这一有价值的功能添加到您的 Web 项目中。

随意尝试更高级的功能,例如平滑过渡或其他主题。可能性是无限的,您的用户将欣赏增加的灵活性。

编码愉快!

","image":"http://www.luping.net/uploads/20240730/172233036366a8acfbc7557.jpg","datePublished":"2024-07-30T17:06:02+08:00","dateModified":"2024-07-30T17:06:02+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 创建 CSS 暗/亮模式切换器

创建 CSS 暗/亮模式切换器

发布于2024-07-30
浏览:111

Creating a CSS Dark/Light Mode Switcher

深色和浅色模式切换器变得越来越流行,让用户可以灵活地选择自己喜欢的视觉体验。无论是为了减轻眼睛疲劳、节省电池寿命,还是只是遵循个人喜好,实现暗/亮模式切换器都可以显着增强用户体验。在本文中,我们将指导您使用 HTML、CSS 和 JavaScript 创建一个简单而有效的暗/亮模式切换器。

为什么要实施暗/亮模式?

1。用户偏好: 一些用户为了美观或减少眼睛疲劳而更喜欢深色模式,尤其是在弱光环境下。

2.辅助功能: 通过提供可以帮助视障用户的主题来提高辅助功能。

3.省电: 在 OLED 屏幕上,深色模式可以节省电池寿命。

设置 HTML 结构

首先创建一个简单的 HTML 结构。我们需要一个按钮来在深色和浅色模式之间切换。



    
    
    Dark/Light Mode Switcher
    


    

Dark/Light Mode Switcher

Toggle the button to switch between dark and light modes.

使用 CSS 设计样式

接下来,我们将为深色和浅色模式定义样式。我们将使用 CSS 变量来更轻松地切换主题。

/* styles.css */
:root {
    --bg-color: #ffffff;
    --text-color: #000000;
    --button-bg-color: #000000;
    --button-text-color: #ffffff;
}

body {
    background-color: var(--bg-color);
    color: var(--text-color);
    font-family: Arial, sans-serif;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.container {
    text-align: center;
    margin-top: 50px;
}

button {
    background-color: var(--button-bg-color);
    color: var(--button-text-color);
    border: none;
    padding: 10px 20px;
    cursor: pointer;
    transition: background-color 0.3s ease, color 0.3s ease;
}

button:hover {
    opacity: 0.8;
}

body.dark-mode {
    --bg-color: #333333;
    --text-color: #ffffff;
    --button-bg-color: #ffffff;
    --button-text-color: #000000;
}

添加 JavaScript 功能

现在,我们将添加 JavaScript 来处理主题切换。我们还将在 localStorage 中保存用户的首选项,以便他们的选择在整个会话中保持不变。

// script.js
document.addEventListener('DOMContentLoaded', () => {
    const switcher = document.getElementById('modeSwitcher');
    const currentMode = localStorage.getItem('theme') || 'light';

    if (currentMode === 'dark') {
        document.body.classList.add('dark-mode');
        switcher.textContent = 'Switch to Light Mode';
    }

    switcher.addEventListener('click', () => {
        document.body.classList.toggle('dark-mode');
        const mode = document.body.classList.contains('dark-mode') ? 'dark' : 'light';
        switcher.textContent = mode === 'dark' ? 'Switch to Light Mode' : 'Switch to Dark Mode';
        localStorage.setItem('theme', mode);
    });
});

解释

1。 CSS 变量: 我们使用 CSS 变量来定义两种模式的颜色,以便在它们之间轻松切换。

2. JavaScript: 我们向按钮添加一个事件侦听器,以切换 body 元素上的暗模式类。我们还根据当前模式更新按钮文本并将模式保存在 localStorage 中。

3.持久主题: 当页面加载时,我们检查 localStorage 以了解用户的偏好并应用适当的主题。

结论

实现暗/亮模式切换器通过提供满足不同偏好和条件的视觉选项来增强用户体验。只需几行 HTML、CSS 和 JavaScript,您就可以将这一有价值的功能添加到您的 Web 项目中。

随意尝试更高级的功能,例如平滑过渡或其他主题。可能性是无限的,您的用户将欣赏增加的灵活性。

编码愉快!

版本声明 本文转载于:https://dev.to/mdhassanpatwary/creating-a-css-darklight-mode-switcher-26cd?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在Java列表中有效计算元素的发生?
    如何在Java列表中有效计算元素的发生?
    计数列表中的元素出现在列表 中,在java编程中,列举列表中列举元素出现的任务来自列表。为此,收集框架提供了全面的工具套件。在这种情况下,Batocurrences变量将保持值3,代表动物列表中的“ BAT”出现的数量。 &&& [此方法是简单的,可以得出准确的结果,使其成为计算列表中元素出现的理...
    编程 发布于2025-02-06
  • 如何有效地更新实体框架5中的记录?
    如何有效地更新实体框架5中的记录?
    [2 优化实体框架5记录更新 实体框架5提供了几种更新数据库记录的方法。 该分析比较了三种常见方法,突出了它们的优势和缺点,以帮助您选择满足需求的最佳方法。 方法1:获取并更新单个属性 允许对修改哪些属性进行精确控制。 属性排除:对于某些属性(如密码)不应通过此方法直接更新的方案。 多个查询:需要...
    编程 发布于2025-02-06
  • Java是否允许多种返回类型:仔细研究通用方法?
    Java是否允许多种返回类型:仔细研究通用方法?
    在java中的多个返回类型:一个误解介绍,其中foo是自定义类。该方法声明似乎拥有两种返回类型:列表和E。但是,情况确实如此吗?通用方法:拆开神秘 [方法仅具有单一的返回类型。相反,它采用机制,如钻石符号“ ”。分解方法签名: :本节定义了一个通用类型参数,E。它表示该方法接受了扩展foo类的任...
    编程 发布于2025-02-06
  • 我可以在CSS中使用SVG作为伪元素吗?
    我可以在CSS中使用SVG作为伪元素吗?
    使用svgs用作pseudo-element content css content properts允许在使用元素之前或之后使用元素插入各种类型的内容伪元素,例如::之前和::之后。但是,对可以包括哪些内容有限制。可以将svgs用作pseudo-element Content?,现在可以使用s...
    编程 发布于2025-02-06
  • 在没有密码提示的情况下,如何在Ubuntu上安装MySQL?
    在没有密码提示的情况下,如何在Ubuntu上安装MySQL?
    在ubuntu 使用debconf-set-selections sudo debconf-set-selections
    编程 发布于2025-02-06
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-02-06
  • 如何从PHP服务器发送文件?
    如何从PHP服务器发送文件?
    将文件发送到user
    编程 发布于2025-02-06
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 // error:“ coss redeclare foo()” 但是,php工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地...
    编程 发布于2025-02-06
  • 您什么时候需要取消多层指针?
    您什么时候需要取消多层指针?
    使用多个级别的指针是有道理的: 在面向对象的编程上下文中,可以使用三重指针来表示复杂的指针层次结构。例如,考虑以下C类结构:类A { 民众: char *b; }; B级{ 民众: char *c; }; 在这里,A对象包含一个指向B对象的指针,而B对象包含指向char的指针。要从...
    编程 发布于2025-02-06
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    Exploiting Regular ExpressionsA more efficient solution involves leveraging regular expressions.正则表达式允许您定义复杂的搜索模式并在单个操作中执行文本转换。示例示例usage 接下来,您可以使用匹配器...
    编程 发布于2025-02-06
  • 为什么我的nvarchar(最大)值将SQL Server 2005中的4000个字符截断为4000个字符?
    为什么我的nvarchar(最大)值将SQL Server 2005中的4000个字符截断为4000个字符?
    convenation crocess 在提供的代码中,字符串是通过对一系列常量和一系列常数和一系列常数和变量均小于4000个字符。在被分配到 @sql1之前,串联的字符串仍被视为较小字符串的集合。 数据类型preceDence [&& && &&&&&&&&&&&&&&&&&&&&&&&...
    编程 发布于2025-02-06
  • 为什么在JDBC Connections中使用class.forname(“ oracle.jdbc.oracledriver”)?
    为什么在JDBC Connections中使用class.forname(“ oracle.jdbc.oracledriver”)?
    class.forname(“ oracle.jdbc.driver.oracledriver”)在jdbc connections中的目的是什么?使用Java,class.forname(“ oracle.jdbc.driver.oracledriver”)命令扮演至关重要的角色。 的目的是确...
    编程 发布于2025-02-06
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    插入记录时如何解决“一般错误:2006 MySQL 服务器已消失”介绍:将数据插入 MySQL 数据库有时会导致错误“一般错误:2006 MySQL 服务器已消失”。当与服务器的连接丢失时会出现此错误,通常是由于 MySQL 配置中的两个变量之一所致。解决方案:解决此错误的关键是调整wait_tim...
    编程 发布于2025-02-06
  • 在网络开发中保持领先地位:最新新闻,工具和见解#49
    在网络开发中保持领先地位:最新新闻,工具和见解#49
    ?阅读! 创始人模式:一般假设:一家初创公司的管理正在向经理模式变化 - 经理模式 - 在商学院管理和教授的众所周知的方式。 Founder mode is less known and understood, but may be more effective. / start...
    编程 发布于2025-02-06
  • 如何使用PHP将斑点(图像)正确插入MySQL?
    如何使用PHP将斑点(图像)正确插入MySQL?
    在尝试将image存储在mysql数据库中时,您可能会遇到一个可能会遇到问题。本指南将提供成功存储您的图像数据的解决方案。 easudy values('$ this-> image_id','file_get_contents($ tmp_image)...
    编程 发布于2025-02-06

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3