- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我目前对代码还很陌生,对术语的了解也很少,我有点害怕寻求帮助,但就这样吧。
这是我想要完成的:我目前正在尝试创建一个包含多个页面的网站。我想为设置保留的页面之一,您可以在其中将所有页面的主题更改为夜间或白天模式。我在页面上有一个按钮,当您单击它时,我希望整个网站(每一页)通过阅读我制作的暗模式 css 进入“夜间模式”。如果夜间模式被禁用,我希望它通过阅读我也制作的白天模式 css 进入白天模式。我还想将您的偏好作为 cookie 保存在本地存储中,这样如果用户返回网站,它仍处于用户离开网站时的模式。
我不确定这是否可行,但如果有人能帮助我解决这个问题,那就太棒了,因为我觉得我几乎已经开始工作了,但已经被困了很长时间了!我将添加我的 html、javascript 和两个 css 文件,这样您就可以看到我到目前为止所做的一切。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="default.css">
</head>
<body class="pagestyle">
<center>
<h1>Veracity</h1>
<h2>Settings</h2>
<div class="navbar">
<a href="Veracity.html">Home</a>
<a href="Articles.html">Articles</a>
<a href="News.html">News</a>
<a href="Pictures.html">Pictures</a>
<a href="ContactUs.html">Contact Us</a>
<a href="NMTP.html">Settings</a>
</div>
<button id="change-theme-btn">Night Mode</button>
<script src="night-mode.js"></script>
</body>
</html>
接下来是 Javascript:
document.getElementById("change-theme-btn").addEventListener("click",
function () {
let darkThemeEnabled = document.body.classList.toggle("pagestyle");
window.localStorage.setItem("pagestyle-enabled", darkThemeEnabled)
});
if (JSON.parse(window.localStorage.getItem("pagestyle-enabled"))) {
document.body.classList.add("pagestyle");
}
最后,这是我的日常/默认 css 文件:
#lightSwitchOff{ display:inline; }
#lightSwitchOn{ display:none; }
#span{
font-family:Times New Roman;
color: black;
font-size: 25px;
}
body {
background-color: white;
}
button {
background-color: teal;
border-radius: 12px;
color: white;
padding: 15px 32px;
text-align: center;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
font-family:Cooper Black;
}
h1 {
color:teal;
font-size: 60px;
font-family:Magneto;
}
h2 {
color:black;
font-family:Magneto;
}
p {
color:teal;
font-size:20px;
font-family:Courier New;
}
.div{
border:10px solid teal;
width:200px;
border-radius: 10px;
margin:20px;
padding:10px;
}
.navbar {
overflow: hidden;
background-color: #a0a0a0;
font-family: Cooper Black;
}
.navbar a {
float: none;
font-size: 25px;
color: teal;
text-align: center;
padding: 50px 50px;
text-decoration: none;
}
.navbar a:hover, .dropdown:hover .dropbtn, .dropbtn:focus {
background-color: white;
}
.show {
display: block;
}
这是夜间模式的 CSS 文件:
#lightSwitchOff{ display:none; }
#lightSwitchOn{ display:inline; }
#span{
font-family:Times New Roman;
color: #30d110;
font-size: 25px;
}
body {
background-color: black;
}
button {
background-color: #30d110;
color: black;
border-radius: 12px;
padding: 15px 32px;
text-align: center;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
font-family:Cooper Black;
}
h1 {
color:#30d110;
font-size: 60px;
font-family:Magneto;
}
h2 {
color:white;
font-family:Magneto;
}
p {
color:#30d110;
font-size:20px;
font-family:Courier New;
}
body {
background-color: black;
}
.div{
border:10px solid #30d110;
width:200px;
border-radius: 10px;
margin:20px;
padding:10px;
}
.navbar {
overflow: hidden;
background-color: #a0a0a0;
font-family: Cooper Black;
}
.navbar a {
float: none;
font-size: 25px;
color: #30d110;
text-align: center;
padding: 50px 50px;
text-decoration: none;
}
.navbar a:hover, .dropdown:hover .dropbtn, .dropbtn:focus {
background-color: white;
}
.show {
display: block;
}
我不知道我发布的代码太多还是太少,但就像我说的,我是新手,希望提供尽可能多的信息。我想我真的很接近,但我一辈子都想不出一种方法来用一个按钮切换 css 文件,并让切换发生在我网站上的所有页面上。任何建议表示赞赏,如果我遗漏了任何其他有助于得到答案的东西,请告诉我,我可以尽力提供帮助!非常感谢!
最佳答案
如果 css 文件是分开的,那么听起来您应该希望 Javascript 在运行时动态链接正确的 CSS 文件。如果可能,您应该将状态单独保存在 Javascript 中,而不是依赖于 HTML:
// defaults to false when LS not populated
let darkEnabled = Boolean(localStorage.darkEnabled);
const cssElem = document.querySelector('link[rel="stylesheet"]');
if (!darkEnabled) cssElem.href = 'default.css';
else cssElem.href = 'darktheme.css';
document.getElementById("change-theme-btn")
.addEventListener('click', function () {
darkEnabled = !darkEnabled;
localStorage.darkEnabled = darkEnabled;
if (!darkEnabled) cssElem.href = 'default.css';
else cssElem.href = 'darktheme.css';
});
(假设您将深色 CSS 文件命名为 darktheme.css
)
关于javascript - 我如何获得一个按钮来更改样式表、保存到本地存储并出现在网站的所有页面上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49827781/
我尝试根据表单元素的更改禁用/启用保存按钮。但是,当通过弹出按钮选择更改隐藏输入字段值时,保存按钮不受影响。 下面是我的代码。我正在尝试序列化旧的表单值并与更改后的表单值进行比较。但我猜隐藏的字段值无
我正在尝试保存模型的实例,但我得到了 Invalid EmbeddedDocumentField item (1) 其中 1 是项目的 ID(我认为)。 模型定义为 class Graph(Docum
我有一个非常奇怪的问题......在我的 iPhone 应用程序中,用户可以打开相机胶卷中的图像,在我的示例中 1920 x 1080 像素 (72 dpi) 的壁纸。 现在,想要将图像的宽度调整为例
目前,我正在使用具有排序/过滤功能的数据表成功地从我的数据库中显示图像元数据。在我的数据表下方,我使用第三方图像覆盖流( http://www.jacksasylum.eu/ContentFlow/
我的脚本有问题。我想按此顺序执行以下步骤: 1. 保存输入字段中的文本。 2. 删除输入字段中的所有文本。 3. 在输入字段中重新加载之前删除的相同文本。 我的脚本的问题是 ug()- 函数在我的文本
任何人都可以帮助我如何保存多对多关系吗?我有任务,用户可以有很多任务,任务可以有很多用户(多对多),我想要实现的是,在更新表单中,管理员可以将多个用户分配给特定任务。这是通过 html 多选输入来完成
我在 Tensorflow 中训练了一个具有批归一化的模型。我想保存模型并恢复它以供进一步使用。批量归一化是通过 完成的 def batch_norm(input, phase): retur
我遇到了 grails 的问题。我有一个看起来像这样的域: class Book { static belongsTo = Author String toString() { tit
所以我正在开发一个应用程序,一旦用户连接(通过 soundcloud),就会出现以下对象: {userid: userid, username: username, genre: genre, fol
我正在开发一个具有多选项卡布局的 Angular 7 应用程序。每个选项卡都包含一个组件,该组件可以引用其他嵌套组件。 当用户选择一个新的/另一个选项卡时,当前选项卡上显示的组件将被销毁(我不仅仅是隐
我尝试使用 JEditorPane 进行一些简单的文本格式化,但随着知识的增长,我发现 JTextPane 更容易实现并且更强大。 我的问题是如何将 JTextPane 中的格式化文本保存到文件?它应
使用 Docker 相当新。 我为 Oracle 11g Full 提取了一个图像。创建了一个数据库并将应用程序安装到容器中。 正确配置后,我提交了生成 15GB 镜像的容器。 测试了该图像的新容器,
我是使用 Xcode 和 swift 的新手,仍在学习中。我在将核心数据从实体传递到文本字段/标签时遇到问题,然后用户可以选择编辑和保存记录。我的目标是,当用户从 friendslistViewCon
我正在用 Java 编写 Android 游戏,我需要一种可靠的方法来快速保存和加载应用程序状态。这个问题似乎适用于大多数 OO 语言。 了解我需要保存的内容:我正在使用策略模式来控制我的游戏实体。我
我想知道使用 fstream 加载/保存某种结构类型的数组是否是个好主意。注意,我说的是加载/保存到二进制文件。我应该加载/保存独立变量,例如 int、float、boolean 而不是结构吗?我这么
我希望能够将 QNetworkReply 保存到 QString/QByteArray。在我看到的示例中,它们总是将流保存到另一个文件。 目前我的代码看起来像这样,我从主机那里得到一个字符串,我想做的
我正在创建一个绘图应用程序。我有一个带有 Canvas 的自定义 View ,它根据用户输入绘制线条: class Line { float startX, startY, stopX, stop
我有 3 个 Activity 第一个 Activity 调用第二个 Activity ,第二个 Activity 调用第三个 Activity 。 第二个 Activity 使用第一个 Activi
我想知道如何在 Xcode 中保存 cookie。我想使用从一个网页获取的 cookie 并使用它访问另一个网页。我使用下面的代码登录该网站,我想保存从该连接获得的 cookie,以便在我建立另一个连
我有一个 SQLite 数据库存储我的所有日历事件,建模如下: TimerEvent *Attributes -date -dateForMark -reminder *Relat
我是一名优秀的程序员,十分优秀!