当前位置:首页 > 科技  > 软件

如何使用CSS和JavaScript实施暗模式?

来源: 责编: 时间:2023-10-10 18:30:56 167观看
导读译者 | 布加迪审校 | 重楼近年来,暗模式作为用户界面选项备受追捧。它提供了更暗的背景和更亮的文本,不仅可以减轻眼睛疲劳,还可以节省电池续航时间,尤其是在OLED屏幕上。不妨了解如何结合使用CSS和JavaScript为网站和Web

译者 | 布加迪FXB28资讯网——每日最新资讯28at.com

审校 | 重楼FXB28资讯网——每日最新资讯28at.com

近年来,暗模式作为用户界面选项备受追捧。它提供了更暗的背景和更亮的文,不仅可以减轻眼睛疲劳,还可以节省电池续航时间,尤其是在OLED屏幕上。FXB28资讯网——每日最新资讯28at.com

FXB28资讯网——每日最新资讯28at.com

不妨了解如何结合使用CSSJavaScript为网站和Web应用程序添加暗模式选项。FXB28资讯网——每日最新资讯28at.com

了解暗模式

模式是网站的另一种配色方案,将传统的浅色背景换成深色背景。它使您的页面更悦目,尤其在光线较暗的情况下。由于用户友好暗模式已经成为许多网站和应用程序的标准功能。FXB28资讯网——每日最新资讯28at.com

搭建项目

实施暗模式之前,确保您已搭建了一个项目准备好进行工作。您应该以一种结构化的方式组织HTMLCSSJavaScript文件。FXB28资讯网——每日最新资讯28at.com

HTML代码

从页面内容的以下标记开始入手。访将能够使用theme__switcher元素在暗模式亮模式之间切换。FXB28资讯网——每日最新资讯28at.com

<body>   		     <nav class="navbar"> 			           <span class="logo">Company Logo</span>                        <ul class="nav__lists">                                <li>About</li>                               <li>Blog</li>                                <li>Contact</li>                         </ul>                         <div id="theme__switcher">                                  <img id="theme__image" src="./toggle.svg" alt="" />                          </div>               </nav>    <main>Lorem ipsum dolor sit amet consectetur adipisicing elit.    Odit deserunt sit neque in labore quis quisquam expedita minus    perferendis.    </main>    <script src="./script.js"></script></body>

CSS代码

添加以下CSS代码来设置示例的样式。这将充当默认的模式,稍后您可以为暗模式视图添加新样式。FXB28资讯网——每日最新资讯28at.com

@import url("https://fonts.googleapis.com/css2?family=Quicksand:wght@400;700&display=swap");* {         margin: 0;         padding: 0;         box-sizing: border-box;}html { font-size: 62.5%; }body { font-family: "Quicksand", sans-serif; }.navbar {         display: flex;         padding: 2rem;         font-size: 1.6rem;         align-items: center;         color: rgb(176, 58, 46);         background-color: #fdedec;}.navbar span { margin-right: auto; }.logo { font-weight: 700; }.nav__lists {         display: flex;         list-style: none;         column-gap: 2rem;        margin: 0 2rem;}#theme__switcher { cursor: pointer; }main {        width: 300px;         margin: 5rem auto;         font-size: 2rem;         line-height: 2;         padding: 1rem 2rem;         border-radius: 10px;         box-shadow: 2px 3.5px 5px rgba(242, 215, 213, 0.4);}

现在,您的界面应该是这样FXB28资讯网——每日最新资讯28at.com

FXB28资讯网——每日最新资讯28at.com

使用CSS和JavaScript实施暗模式

为了实施暗模式,您将使用CSS定义外观。然后,您将使用JavaScript来处理暗模式和亮模式之间的切换。FXB28资讯网——每日最新资讯28at.com

创建主题类

为每个主题使用一个类,这样您就可以在两种模式之间轻松切换。对于较完整的项目而言,您应该考虑暗模式如何影响设计的方面面。FXB28资讯网——每日最新资讯28at.com

.dark {              background: #1f1f1f;              color: #fff;     }     .light {              background: #fff;              color: #333;     }

选择交互元素

将以下JavaScript添加到script.js文件中。第一部分代码只是选择用于处理切换的元素。FXB28资讯网——每日最新资讯28at.com

// Get a reference to the theme switcher element and the document body    const themeToggle = document.getElementById("theme__switcher");    const bodyEl = document.body;

添加切换功能

下一步,使用下列JavaScript在亮模式(light)类与暗模式(dark)类之间切换。注意,改变切换开关以表明当前模式也是个好主意。该代码使用CSS过滤器来实现这功能。FXB28资讯网——每日最新资讯28at.com

// Function to set the theme     function setTheme(theme) {             // If the theme is "dark," add the "dark" class, remove "light" class,             // and adjust filter style             bodyEl.classList.toggle("dark", theme === "dark");            // If the theme is "light," add the "light" class, remove "dark" class,             bodyEl.classList.toggle("light", theme !== "dark");            // adjust filter of the toggle switch            themeToggle.style.filter = theme === "dark" ? "invert(75%)" : "none";    }    // Function to toggle the theme between light and dark    function toggleTheme() {           setTheme(bodyEl.classList.contains("dark") ? "light" : "dark");    }    themeToggle.addEventListener("click", toggleTheme);

这使得您的页面可以通过点击切换容器来更改主题。FXB28资讯网——每日最新资讯28at.com

FXB28资讯网——每日最新资讯28at.com

使用JavaScript增强暗模式

考虑以下两个改进,可以使您的暗模式网站被访客更易于使用。FXB28资讯网——每日最新资讯28at.com

检测用户偏好

需要在网站加载之前检查用户的系统主题,并调整您的网站进行匹配。下面介绍如何使用matchMedia函数来做到这一点FXB28资讯网——每日最新资讯28at.com

// Function to detect user's preferred theme    function detectPreferredTheme() {            // Check if the user prefers a dark color scheme using media queries            const prefersDarkMode = window.matchMedia("(prefers-color-scheme: dark)").matches;            setTheme(prefersDarkMode);    }    // Run the function to detect the user's preferred theme    detectPreferredTheme();

现在,任何访问您网站的用户都会看到一个与他们设备当前主题相匹配的设计。FXB28资讯网——每日最新资讯28at.com

使用本地存储持久化用户首选项

为了进一步增强用户体验,可以使用本地存储记住用户选择模式。这确保了他们在面对会话时不必重复选择偏爱的模式。FXB28资讯网——每日最新资讯28at.com

function setTheme(theme) {              bodyEl.classList.toggle("dark", theme === "dark");              bodyEl.classList.toggle("light", theme !== "dark");              themeToggle.style.filter = theme === "dark" ? "invert(75%)" : "none";             // Setting the theme in local storage              localStorage.setItem("theme", theme);    }    // Check if the theme is stored in local storage    const storedTheme = localStorage.getItem("theme");    if (storedTheme) {             setTheme(storedTheme);    }    function detectPreferredTheme() {              const prefersDarkMode = window.matchMedia("(prefers-color-scheme: dark)").matches;                  // Getting the value from local storage              const storedTheme = localStorage.getItem("theme");              setTheme(prefersDarkMode && storedTheme !== "light" ? "dark" : "light");  }

拥抱以用户为中心的设计

暗模式不仅限于外观,而是把用户的舒适和偏好放在第一位。如果遵循这种方法,您可以创建用户友好的界面鼓励访客重复访问。您在编程和设计时,优先考虑用户便利,并为访客提供更好的数字体验。FXB28资讯网——每日最新资讯28at.com

原文标题:How to Implement Dark Mode Using CSS and JS,作者:DAVID JAJAFXB28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-12700-0.html如何使用CSS和JavaScript实施暗模式?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 玩转SpringBoot—Starter组件

下一篇: Golang 中的 Bufio 包详解之 Bufio.Scanner

标签:
  • 热门焦点
  • K60 Pro官方停产 第三方瞬间涨价

    K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 6月安卓手机好评榜:魅族20 Pro蝉联冠军

    6月安卓手机好评榜:魅族20 Pro蝉联冠军

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年6月1日至6月30日,仅限国内市场。第一名:魅族20 Pro好评率:95%5月份的时候魅族20 Pro就是
  • 把LangChain跑起来的三个方法

    把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • K8S | Service服务发现

    K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 这款新兴工具平台,让你的电脑效率翻倍

    这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • Python异步IO编程的进程/线程通信实现

    Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • 网传小米汽车开始筛选交付中心 建筑面积不低于3000平方米

    网传小米汽车开始筛选交付中心 建筑面积不低于3000平方米

    7月7日消息,近日有微博网友@长三角行健者爆料称,据经销商集团反馈,小米汽车目前已经开始了交付中心的筛选工作,要求候选场地至少有120个车位,建筑不能低
  • 联想的ThinkBook Plus下一版曝光,键盘旁边塞个平板

    联想的ThinkBook Plus下一版曝光,键盘旁边塞个平板

    ThinkBook Plus 是联想的一个特殊笔记本类别,它在封面放入了一块墨水屏,也给人留下了较为深刻的印象。据有人爆料,联想的下一款 ThinkBook Plus 可能更特殊,它
Top