HTML 5のWebストレージAPIでダーク/ライトモードの切り替え
14728 ワード
ダークテーマは、Webアプリケーション上でダークとライトモードの切り替えを切り替えるには、本当に簡単なダークモードライブラリです.
バニラJavaScriptで書かれています.クライアント側で現在のテーマを保存するにはHTML 5 WebストレージAPIを使用します.
使い方
ページのチェックボックスベースのトグルスイッチを作成します.
バニラJavaScriptで書かれています.クライアント側で現在のテーマを保存するにはHTML 5 WebストレージAPIを使用します.
使い方
ページのチェックボックスベースのトグルスイッチを作成します.
<div class="toggle">
<input id="switch" type="checkbox" name="theme">
<label for="switch">Toggle</label>
</div>
input[type=checkbox]{
height: 0;
width: 0;
visibility: hidden;
}
label {
cursor: pointer;
text-indent: -9999px;
width: 52px;
height: 27px;
background: grey;
float: right;
border-radius: 100px;
position: relative;
}
label::after{
content: '';
position: absolute;
top: 3px;
left: 3px;
width: 20px;
height: 20px;
background-color: white;
border-radius: 90px;
transition: 0.3s;
}
input:checked + label {
background-color: var(--color-headings);
}
input:checked + label::after {
left: calc(100% - 5px);
transform: translateX(-100%);
}
label:active:after {
width: 45px;
}
次のCSS変数を使用して、ライトモードでスタイルを決定します.html {
--bg: #FCFCFC;
}
body {
background-color: var(--bg);
}
メインモードJavaScriptダークモードスイッチャを有効にし、暗いモードでCSSスタイルを決定します.const html = document.querySelector("html")
const checkbox = document.querySelector("input[name=theme]")
const getStyle = (element, style) =>
window
.getComputedStyle(element)
.getPropertyValue(style);
const initialColors = {
bg: getStyle(html, "--bg"),
}
const darkMode = {
bg: "#333333", // override styles here
}
const transformKey = key =>
"--" + key.replace(/([A-Z])/, "-$1").toLowerCase();
const changeColors = (colors) => {
Object.keys(colors).map(key =>
html.style.setProperty(transformKey(key), colors[key])
);
}
checkbox.addEventListener("change", ({target}) => {
target.checked ? changeColors(darkMode) : changeColors(initialColors);
});
ローカルストレージを作成します.const isExistLocalStorage = (key) => localStorage.getItem(key) != null;
const createOrEditLocalStorage = (key, value) =>
localStorage.setItem(key, JSON.stringify(value));
const getValeuLocalStorage = (key) => JSON.parse(localStorage.getItem(key));
checkbox.addEventListener("change", ({ target }) => {
if (target.checked) {
changeColors(darkMode);
createOrEditLocalStorage("mode", "darkMode");
} else {
changeColors(initialColors);
createOrEditLocalStorage("mode", "initialColors");
}
});
if (!isExistLocalStorage("mode"))
createOrEditLocalStorage("mode", "initialColors");
if (getValeuLocalStorage("mode") === "initialColors") {
checkbox.removeAttribute("checked");
changeColors(initialColors);
} else {
checkbox.setAttribute("checked", "");
changeColors(darkMode);
}
今、それをお試しください!Reference
この問題について(HTML 5のWebストレージAPIでダーク/ライトモードの切り替え), 我々は、より多くの情報をここで見つけました https://dev.to/fariasmateuss/toggle-between-dark-light-modes-with-html5-web-storage-api-14d8テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol