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

标签 javascript css vue.js themes

我想在我的 Vue 应用程序上有一个深色和浅色主题。 我可以创建 dark.scss 文件并更改类样式,并使用 !important 属性来覆盖组件中定义的样式。 或者我可以在组件中使用 props 并根据主题使用 v-if 更改 className。 例如当主题为 light 时,将 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
}

关于javascript - 根据深色或浅色模式更改样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61079443/

相关文章:

javascript - 在 Javascript 中,如何在 "joined"数组周围加上单引号?

javascript - 基于选择器的 jquery 切换(显示/隐藏)

javascript - ASP.NET Core 2.1 SignalR 未定义

css - 使用 CSS 的标题自动编号适用于除顶级之外的所有内容

javascript - 合并从 API vue.js 获取的数据时出现问题

javascript - Nuxt.js-共享持久数据的链接: how the receiver can view the data?

javascript - 使用 JS 操作对象

html - CSS3 Filter 可以应用于 <select> 内的选项吗?

css - IE 8 错误?带有渐变背景的阴影,文本变成灰色

javascript - Vue.js:未重新渲染子组件