如何使用 Javascript 正确构建暗模式切换?
How do I properly structure a dark mode toggle using Javascript?
我一直在尝试使用 JavaScript 让我的开关触发黑暗模式的开启和关闭,但显然我做错了什么。我试图通过将光 class 应用到我的 body 并使用 addClassListener 来触发它。下面是我的代码的简化版本,但我也计划在特定的 classes 上执行此操作,以便在每种不同模式下也更改字体和 div 颜色。有什么建议吗?
HTML
<label class="switch">
<input type="checkbox" checked>
<span id="slide" class="slider round"></span>
</label>
CSS
body{
position: absolute;
top: 320px;
left: 0;
width: 100%;
height: 100%;
background-color: hsl(230, 17%, 14%);
z-index: -1;
}
body.light {
background-color: white;
}
Javascript
const checkbox = document.getElementById('slide');
checkbox.addEventListener('change', ()
==>{document.body.classList.toggle('light');
});
您正试图通过 id
获取元素,但您尚未在代码段中定义任何 id
。
<label class="switch">
<input type="checkbox" checked>
<span id="slider" class="slider round"></span>
</label>
此外,您正在侦听 span
元素上的 change
事件。 span
元素永远不会触发更改事件。如果您将其更改为在 input
元素中侦听,它应该触发。 Documentation
我一直在尝试使用 JavaScript 让我的开关触发黑暗模式的开启和关闭,但显然我做错了什么。我试图通过将光 class 应用到我的 body 并使用 addClassListener 来触发它。下面是我的代码的简化版本,但我也计划在特定的 classes 上执行此操作,以便在每种不同模式下也更改字体和 div 颜色。有什么建议吗?
HTML
<label class="switch">
<input type="checkbox" checked>
<span id="slide" class="slider round"></span>
</label>
CSS
body{
position: absolute;
top: 320px;
left: 0;
width: 100%;
height: 100%;
background-color: hsl(230, 17%, 14%);
z-index: -1;
}
body.light {
background-color: white;
}
Javascript
const checkbox = document.getElementById('slide');
checkbox.addEventListener('change', ()
==>{document.body.classList.toggle('light');
});
您正试图通过 id
获取元素,但您尚未在代码段中定义任何 id
。
<label class="switch">
<input type="checkbox" checked>
<span id="slider" class="slider round"></span>
</label>
此外,您正在侦听 span
元素上的 change
事件。 span
元素永远不会触发更改事件。如果您将其更改为在 input
元素中侦听,它应该触发。 Documentation