diff --git a/src/layout/components/setting/index.vue b/src/layout/components/setting/index.vue
index d3b859fb8..04d70f12a 100644
--- a/src/layout/components/setting/index.vue
+++ b/src/layout/components/setting/index.vue
@@ -4,12 +4,11 @@
@@ -23,6 +22,13 @@ export default {
name: "setting",
components: { panel },
setup() {
+ function toggleClass(flag: boolean, clsName: string, target?: HTMLElement) {
+ const targetEl = target || document.body;
+ let { className } = targetEl;
+ className = className.replace(clsName, "");
+ targetEl.className = flag ? `${className} ${clsName} ` : className;
+ }
+
const localOperate = (key: string, value?: any, model?: string): any => {
model && model === "set"
? storageLocal.setItem(key, value)
@@ -31,29 +37,48 @@ export default {
const settings = reactive({
greyVal: storageLocal.getItem("greyVal"),
+ weekVal: storageLocal.getItem("weekVal")
});
settings.greyVal === null
? localOperate("greyVal", false, "set")
: document.querySelector("html")?.setAttribute("class", "html-grey");
+ settings.weekVal === null
+ ? localOperate("weekVal", false, "set")
+ : document.querySelector("html")?.setAttribute("class", "html-weakness");
+
// 灰色模式设置
const greyChange = ({ value }): void => {
- if (value) {
- localOperate("greyVal", true, "set");
- document.querySelector("html")?.setAttribute("class", "html-grey");
- } else {
- localOperate("greyVal", false, "set");
- document.querySelector("html")?.removeAttribute("class");
- }
+ toggleClass(
+ settings.greyVal,
+ "html-grey",
+ document.querySelector("html")
+ );
+ value
+ ? localOperate("greyVal", true, "set")
+ : localOperate("greyVal", false, "set");
+ };
+
+ // 色弱模式设置
+ const weekChange = ({ value }): void => {
+ toggleClass(
+ settings.weekVal,
+ "html-weakness",
+ document.querySelector("html")
+ );
+ value
+ ? localOperate("weekVal", true, "set")
+ : localOperate("weekVal", false, "set");
};
return {
...toRefs(settings),
localOperate,
greyChange,
+ weekChange
};
- },
+ }
};
diff --git a/src/style/index.scss b/src/style/index.scss
index 47750ef5a..3e2662dbc 100644
--- a/src/style/index.scss
+++ b/src/style/index.scss
@@ -100,6 +100,7 @@ ul {
top: 48px !important;
}
+// 灰色模式
.html-grey {
filter: grayscale(100%);
-webkit-filter: grayscale(100%);
@@ -111,6 +112,15 @@ ul {
-webkit-filter: grayscale(1);
}
+// 色弱模式
+.html-weakness {
+ filter: invert(80%);
+ -webkit-filter: invert(80%);
+ -moz-filter: invert(80%);
+ -ms-filter: invert(80%);
+ -o-filter: invert(80%);
+}
+
.el-loading-mask {
z-index: -1;
}
\ No newline at end of file