javascript - 使用混合混合模式的暗模式:差异不起作用
问题描述
好的,所以我一直在尝试在我的网站上实现暗模式功能。我制作了一个出现在页面右下角的小部件。我将整个网站包含在一个名为 test 的 div 中。单击小部件后,它会切换并将类添加dark-mode-screen
到test
div。
但是,只有文本和小部件的颜色会发生变化,而背景保持不变。
CSS
.box {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border: 1px solid #333;
padding: 10px 20px;
font-family: sans-serif;
mix-blend-mode: normal;
transition: mix-blend-mode 0.7s ease-in;
}
.dark-button {
position: absolute;
right: 20px;
bottom: 20px;
border-radius: 50px;
height: 60px;
width: 60px;
border: 1px solid steelblue;
background: steelblue;
outline: none;
}
.dark-mode-screen {
width: 100vw;
height: 100%;
position: fixed;
top: 0;
left: 0;
background: white;
overflow-y: scroll;
}
.test {
background: #fff;
transition: all 0.7s ease-in;
}
HTML:
<div class="test">
<div class="container" style="background: #fff; mix-blend-mode: difference;">
<div class="box">
<h3>My Paragraph</h3>
<p>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.</p>
</div>
<button class="dark-button"></button>
</div>
</div>
JavaScript:
const darkModeToggle = document.querySelector('.dark-button');
darkModeToggle.onclick = function() {
document.querySelector('.test').classList.toggle('dark-mode-screen');
}
解决方案
您可以将background-color
CSS 属性设置为白色mix-blend-mode
,但没有提供任何要减去的内容:
.box {
...
background-color: white;
}
const darkModeToggle = document.querySelector('.dark-button');
darkModeToggle.onclick = function() {
document.querySelector('.test').classList.toggle('dark-mode-screen');
}
.box {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border: 1px solid #333;
padding: 10px 20px;
font-family: sans-serif;
mix-blend-mode: normal;
transition: mix-blend-mode 0.7s ease-in;
background-color: white;
}
.dark-button {
position: absolute;
right: 20px;
bottom: 20px;
border-radius: 50px;
height: 60px;
width: 60px;
border: 1px solid steelblue;
background: steelblue;
outline: none;
}
.dark-mode-screen {
width: 100vw;
height: 100%;
position: fixed;
top: 0;
left: 0;
background: white;
overflow-y: scroll;
}
.test {
background: #fff;
transition: all 0.7s ease-in;
}
<div class="test">
<div class="container" style="background: #fff; mix-blend-mode: difference;">
<div class="box">
<h3>My Paragraph</h3>
<p>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.</p>
</div>
<button class="dark-button"></button>
</div>
</div>
推荐阅读
- php - 我们可以在 php 中定义变量后转义 qoutes
- python - Pandas DataFrame 在一个起始词和多个停止词之间提取
- loading - amp-img 一种知道何时完成的方法
- javascript - 带有此混淆 JS 代码的电子邮件附件
- php - 使用 laravel 在电子邮件中显示动态视图
- arrays - 如何添加来自不同数组的多维数组值
- r - 在 R 中,将杂乱的数据抓取并组织到数据框中
- java - 在java中使用for循环创建多个对象时的输入缓冲区
- mongodb - 用于全局标签搜索的 MongoDb Schema 设计
- python - 带有 SQLite 的 SQLAlchemy 中的非常长的整数