wordpress - 如何在 Wordpress 主题的定制器中添加暗模式选项?(无插件)
问题描述
我开发了一个wordpress主题。我想在定制器中添加暗模式选项。我想用组合框做出这个选择。选择黑模式时,足以在身体元素中添加名为Dark的类。Likewise, when the light mode is selected, it is enough to add the light class named in the body element. 我怎样才能做到这一点?(我可以用 css 完成剩下的工作。)
解决方案
你的问题有点含糊,我想你是说你正在使用插件来处理黑暗模式或夜间模式,但我不确定......使用插件来处理夜间模式是不必要的。
就位,夜间模式相当简单,我们想将一个 css 类(我们称之为类.night
)添加到我们的 body 标签中。在用户单击时,我们想要切换 2 个不同的状态。我们当前的切换状态需要保存为一个LocalStorage
项目。完成此操作后,我们将为 css 中的每个部分、div 和任何其他内容定义适当的颜色。让我们开始吧。
大多数主题都在使用jQuery
(一个 JS 库),这将是唯一的要求。
$(document).ready(function () {
null != localStorage.getItem("state") && (localStorage.settingNight, $("body").toggleClass("night"), $("#toggle").toggleClass("selected")),
$("#toggle").click(function () {
$("body").toggleClass("night"), $("#toggle").toggleClass("selected"), $("#toggle").hasClass("selected") ? localStorage.setItem("state", "true") : localStorage.removeItem("state");
});
});
这里我们定义了多个css类和id:
#toggle
, 这是我们的按钮。他们与.selected
类一起定义了LocalStorage
状态项。.night
,我们使用.night
css 类为每个部分、div 和任何其他内容应用适当的颜色。- '.selected',我们使用'.selected' css 类来知道我们处于哪个状态。我们还可以将自定义样式应用于我们的
#toggle
按钮。
我们html
现在可以添加以下内容:
<button id="toggle">Nightmode</button>
这是我们的切换按钮,当接收到用户点击时,它会切换状态。
在我们的 css 中,我们可以自定义适当的颜色:
.selected{background-color:#f17d3b!important;border-color:#f17d3b!important;}
body.night,
body.night html{background-color:#1d1e22!important;}
在这里,我们为每个部分、div、文本等定义颜色。We use body.night .class
to target our classes behaviours when the night state is selected.
最后,我制作了一个简单的 codpen 和一个工作示例,让您更轻松地开始!在此示例中,我使用的是 Bootstrap 框架,这是不必要的。
来源@https ://codepen.io/amarinediary/pen/poErgVw
感谢LocalStorage
,我们的浏览器记住了夜间状态。
推荐阅读
- javascript - 在 javascript 中创建删除按钮以删除购物清单项目
- python - 从一个文件中读取单词并将它们grep到另一个文件中
- node.js - Express 和 Mongoose:没有得到回调的响应
- python - Python 请求库在 Windows 上非常慢
- awk - 从 /var/log/messages 中提取最近 2 小时的日志文件
- python-3.x - python使用回车重写多行
- python - 对 python 中的 UTC 偏移量感到疯狂(to_datetime panda 函数和 datetime 对象)
- python - 基于文本将值从一个数据帧平均分配到另一个数据帧
- javascript - 为什么 ref 总是为空?
- android - 在 Room 中,为什么我可以 @insert 在表中插入一行但无法通过 SQL 请求检索它?