根据深色或浅色模式更改样式

Change styles based on dark or light mode

我想在我的 Vue 应用程序中使用深色和浅色主题。 我可以创建 dark.scss 文件并更改 classes 样式并使用 !important 属性 覆盖组件中定义的样式。 或者我可以在我的组件中使用 props 并根据主题将 className 更改为 v-if。 例如当主题为浅色时,将 class 设置为 className__light,否则设置为 className__dark。 在性能或完成所需的时间等所有情况下,哪个更好?

好吧,我不会用 类 这样做。我会用 SCSS 创建 CSS 变量,或者你在 :root

中创建 CSS 变量

如果您使用 :root 方法,那么它应该看起来像这样:

:root {
   --background: red;
}

然后你可以在任何组件中访问它,例如:

.class {
   background: var(--background); // the background will appear red
}

现在您只需使用 1 CSS 个变量即可更改背景颜色。

要使用 Javascript 更改变量,您只需编写以下内容:

 root.style.setProperty('--background', "green");

这里的问题是,如果您关心浏览器支持,IE 不支持它。 所以你应该像这样创建一个后备:

.class {
   background: red; //fallback
   background: var(--background); // the background will appear red
}