当前位置: 首页 > 知识库问答 >
问题:

通过记忆用户选择来切换主题?

卫沈义
2023-03-14
const theme = document.querySelector(':root');
const btns = document.querySelectorAll('.colors');



btns.forEach(function(btn){

 btn.addEventListener("click", function(e){

    const color = e.currentTarget.classList;

    if(color.contains("green")){
        theme.style.setProperty("--color", "#47A846");
    }
    else if(color.contains("grey")){
        theme.style.setProperty("--color", "#6C757D");
    }
    else{
        theme.style.setProperty("--color", "#F26B38");
    }
 });
});

我有一个颜色列表,当点击,它改变了文本的颜色,悬停等在网站上。但当您重新加载或转到另一页时,我选择的颜色不会保存。似乎是使用localStorage完成的,但我不明白如何实现它。站点链接:点击

共有1个答案

从阎宝
2023-03-14

可以使用window.localstorage.setitem设置localstorage中的主题,并使用window.localstorage.getitem来获取该项。码本

记住使用name设置主题,并使用相同的name进行检索。

出于安全原因,它不会显示下面代码的结果

null

const colorInput = document.querySelector("input");
const div = document.querySelector("div");

function changeTheme(color) {
  div.style.backgroundColor = color;
}

// Get local storage color
const color = window.localStorage.getItem("theme");
if (color) {
  changeTheme(color);
}

colorInput.addEventListener("change", e => {
  const color = e.target.value;
  changeTheme(color);
  
  // Set local storage color.
  window.localStorage.setItem('theme', color);
})
div {
  padding: 1rem;
}
<input type="color" />
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
  in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>
 类似资料:
  • 问题内容: 我从bootswatch下载了主题,并试图允许用户切换主题。切换主题后,所有引导CSS都会暂时消失,直到加载新主题为止。在加载CSS之前如何防止更改,或者在加载新主题之前切换回默认主题? index.ejs(在头) 选拔 索引控制器 选择控制器 任何帮助表示赞赏!谢谢 问题答案: 我认为这不是AngularJS的问题。我认为您的方法应该有所不同。 据我所知,主题功能通常按以下方式实现。

  • 我的应用程序中有以下工作流: 用户登录我的自定义应用程序 用户点击一个按钮链接他们的YouTube帐户 应用程序使用下面的代码列表发出服务器端请求 用户被重定向到google auth url 此时,发生了两件事之一: [我从来不想要这种行为] - 如果用户只登录了一个谷歌帐户(即mail,谷歌域名应用套件等),则永远不会要求用户选择要链接的帐户。它只是假设他们想要使用他们登录的那个,并继续其快乐

  • 问题内容: 问题: 无法从CSS选择器特定元素中选择。需要验证注册用户是否可以成功更改其密码。我试过了类的不同属性来调用它。当尝试前两个示例时,结果是方法中的异常错误。最后的尝试将调用第一个类实例并重置密码字段(失败)。 尝试过: 目的: 我需要选择共享同一班级的项目。如下所示,该类是共享的。 问题答案: 编辑:因为选择器需要一个,或,但是它们本身都不是。 提供要匹配的类名,并从那里指定要选择的特

  • 我正在尝试使用新的嵌入式可视化功能。我有一个iframe,它指向graphdb服务器,url如下: http://localhost:7200/graphs-视觉化?uri=[…] 这很好,但只适用于默认或以前选择的存储库。我无法找到一种方法来选择存储库,而不必手动转到http://localhost:7200/ 似乎存储库选择存储在一个cookie中,并且HTTP头可用,但似乎没有任何东西可以用

  • 主机记忆体格式化   替主机记忆体格式化。请遵循画面指示,正确操作。 重要 进行此操作后,会自动删除主机内存内的所有数据。由于数据会永远消失,请注意别消除了重要的数据。数据一经消除或毁损即无法复原。

  • 我已通过VS代码使用Azure帐户扩展登录到我的一个Azure帐户。我没有找到任何注销或切换帐户的按钮。如何注销或切换帐户?