我的编程空间,编程开发者的网络收藏夹
学习永远不晚

HTML5怎么使用可选样式表为网站或应用添加黑暗模式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

HTML5怎么使用可选样式表为网站或应用添加黑暗模式

这篇文章给大家分享的是有关HTML5怎么使用可选样式表为网站或应用添加黑暗模式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

为你的站点添加黑暗模式

黑暗模式 已经应用在了许多流行的网站和应用程序中,诸如 Twitter、Instagram、WhatsApp 和 YouTube 等。但是你该怎样在自己的网站上添加这种模式呢?

我一直非常喜欢动态的网站颜色主题切换器。它们可以让你选择自己喜欢的颜色主题,从而改善了用户体验!

例如,下面是在 Twitter 的“显示设置”下找到的颜色主题选项。

HTML5怎么使用可选样式表为网站或应用添加黑暗模式

这次就让我们来创建与之类似的功能吧。也许它不会像 Twitter 的主题更改器那么高大上,但我们会讲明白这里会用到的技术细节,告诉大家如何使用可选样式表(alternate style sheets)和 JavaScript 来切换 CSS 所包含的主题定义。

首先……我们来看一下这篇文章要创建出什么样的内容。

下面是一个可以切换本网站颜色主题的运行示例:

https://www.javascriptteacher.com/dark-mode-alternate-css-style-sheet.html?rt

HTML5怎么使用可选样式表为网站或应用添加黑暗模式

单击各个按钮就可以立即切换整个网站的 CSS 主题。在本教程的剩余部分,我将向你展示如何向你自己的站点添加黑暗模式功能!

如果你能抓取到这篇黑暗模式教程页面使用的可选样式表,那也可以复制到你自己制作的网站上,或者用在你的 Wordpress(或类似的站点构建工具)中。

你可能听说过 CSS 可以是 内联 的,内部 的和 外部 的。这决定了 CSS 包含在你的文档中的方式。但是为了理解可选样式表的概念,我们首先需要看一下……

层叠样式表的 3 种类型

但是,层叠样式表(也就是 CSS)还有其他三种形式。它们分别是 持久 的,首选 的和 可选 的。

持久样式 指的是始终启用的 CSS 样式,并与活动样式表结合在一起。为了指定持久样式表,需要将 rel = "stylesheet" 属性添加到你的 link 标签,并跳过 title 属性。

这就是你指定一个样式表的常规方式。

<!-- Persistent Style Sheet --> <link class="lazy" data-src = "style.css" rel = "stylesheet"

首选样式 是页面加载完成后启用的默认样式。要创建它,请向你的 CSS link 标签添加 title 属性。

<!-- Alternate Style Sheet (just add a title) --> <link class="lazy" data-src = "dark.css"       rel = "stylesheet"     title = "dark" />

可选样式 可以实时切换来更改页面主题,而无需重新加载页面。

<!-- Dark Mode Alternate Style Sheet --> <link class="lazy" data-src = "dark.css"     title = "dark" />       rel = "alternate stylesheet" /> <!-- Light Mode Alternate Style Sheet --> <link class="lazy" data-src = "light.css"     title = "light"       rel = "alternate stylesheet" />

为了创建可选样式表,你要做的就是将 link 标签中的 rel 属性设置为“alternate stylesheet”。就这样即可。这只是第一步。现在我们需要编写一个脚本来切换样式表。

在样式表之间动态切换

我在做相关研究时,在网上发现了不少有些年头的可选样式表 JavaScript 函数。但是它们有点过时了,所以我自己写了一个版本。

最重要的是,你需要在要启用的可选样式表对象上将属性 disabled 设置为 false。

<!-- Switch to a named alternate stylesheet --> function setActiveStyleSheet(title) {     let css = `link[rel="alternate stylesheet"]`;     let stylesheets = document.querySelectorAll(css);     stylesheets.forEach(sheet => sheet.disabled = true);     let selector = `link[title="${title}"]`;     let stylesheet = document.querySelector(selector);     stylesheet.disabled = false;

要动态切换到新样式表上,首先你必须禁用所有可用的可选样式表。如果你没能做到这一点,则会发现你的可选样式表不起作用(无法切换)。因此,在这个函数的第一步中,我们禁用了所有可用的可选样式表。完成后,我们启用了 title 参数中指定的那个。

<!-- Attach event to a button -->     let DarkModeButton = document.getElementById("DarkModeButton");     DarkModeButton.addEventListener("click",         event => setActiveStyleSheet("darkmode"));

你可以将 setActiveStyleSheet 函数作为回调附加到负责切换它的按钮的“click”事件上。请注意,上面的示例假设我们有一个 title = "darkmode" 的样式表。或者,你可以直接在元素上直接使用 onclick 属性即可:

<div id = "DarkModeButton" onclick = "setActiveStyleSheet('darkmode')">

就动态切换 CSS 样式表需要的工作来说,到这里就都完成了。但是还有一件事!如果用户在选择其他主题之后离开站点,则需要确保当用户返回时网站加载了他们最后选择的那个主题。这可以使用 cookie 来实现,但是在本教程中,我将使用 HTML5 localStorage 来完成它。

记忆所选主题

我们可以使用 localStorage 来记住用户之前所选择的主题。这里的代码是直截了当的。每次选择主题时,我们都会将其标题名称存储在名为 "theme" 的 localStorage 项目中。下面我们来更新上一步中已经编写好的那个函数:

<!-- Switch to a named alternate stylesheet --> function setActiveStyleSheet(title) {     let css = `link[rel="alternate stylesheet"]`;     let stylesheets = document.querySelectorAll(css);     stylesheets.forEach(sheet => sheet.disabled = true);     let selector = `link[title="${title}"]`;     let stylesheet = document.querySelector(selector);     stylesheet.disabled = false;     localStorage.setItem("theme", title); }

请注意,这里我们添加了一个新的 localStorage 调用。现在,每次切换到一个可选样式表上时,它将存储在关键字 "theme" 下。

现在,如果用户离开站点并(在关闭浏览器选项卡之后)再次进入站点,我们需要恢复保存在 localStorage 中的默认主题。

为了做到这一点,我们需要从 DOMContentLoaded 事件上读取本地存储(时间就在 DOM 加载完毕之后不久),并使用存储在主题项目中的值来选择样式表:

<!-- Switch to a named alternate stylesheet --> window.addEventListener('DOMContentLoaded', (event) => {     console.log('DOM fully loaded and parsed');     let title = localStorage.getItem("theme");     setActiveStylesheet(title); })

感谢各位的阅读!关于“HTML5怎么使用可选样式表为网站或应用添加黑暗模式”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

HTML5怎么使用可选样式表为网站或应用添加黑暗模式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

HTML5怎么使用可选样式表为网站或应用添加黑暗模式

这篇文章给大家分享的是有关HTML5怎么使用可选样式表为网站或应用添加黑暗模式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。为你的站点添加黑暗模式黑暗模式 已经应用在了许多流行的网站和应用程序中,诸如 Twitt
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录