javascript - 保留不同 html 页面之间的按钮完成的颜色更改
问题描述
我有一个网站,其中一个按钮用于将 CSS 配色方案更改为暗色;
$(document).ready(function () {
$(".theme-switch").on("click", () => {
$("body").toggleClass("dark-theme");
});
});
这会改变 CSS 中的颜色变量,进而改变特定页面的配色方案。但是我怎样才能在整个网站中保留这种颜色变化呢?
解决方案
如果您想保存它并稍后访问它,您可以执行以下操作:
$(document).ready(function () {
let darkTheme = localStorage.getItem('theme') === 'dark';
updateTheme();
function updateTheme() {
if (darkTheme) {
$("body").addClass("dark-theme");
} else {
$("body").removeClass("dark-theme");
}
}
$(".theme-switch").on("click", () => {
darkTheme = !darkTheme;
updateTheme();
localStorage.setItem('theme', darkTheme ? 'dark' : 'light');
});
});
您还可以添加它以确保它在所有选项卡中更改:
window.addEventListener('storage', () => {
darkTheme = localStorage.getItem('theme') === 'dark';
updateTheme();
});
(之前function updateTheme()
)。该storage
事件会随时触发localStorage
或sessionStorage
在您的域的另一个选项卡中更新。它对于选项卡之间的通信很有用。
推荐阅读
- python - 在从 ORM 数据中选择 ModelChoiceField 中设置“值”
- diagramming - 属性可以与数据流图上的实体标题一起使用吗?
- php - 来自我的 4866 行长的连接 php 文件的突然 Webkitformboundary 错误
- ionic-framework - 如何在 ionic3 中设置个人资料图片功能
- excel - Excel - 计算列表中的项目,忽略文本但计算数字?
- c# - 如何从另一个列表中的列表中查找任何 ID
- reactjs - 使用字符串变量加载图像(需要)不起作用
- android - ListView 与 ImageView - 如何将不同的链接放置到列表中的每个 ImageView
- ios - TableViewCell 在可见路径重新加载行后未调整大小
- javascript - Laravel 一键组合两个 jquery 函数,将产品插入购物车