【发布时间】:2020-04-07 11:52:57
【问题描述】:
我想在我的 Vue 应用程序上使用深色和浅色主题。
我可以创建dark.scss 文件并更改类样式并使用!important 属性来覆盖组件中定义的样式。
或者我可以在我的组件中使用props,并根据主题将className 更改为v-if。
例如当主题很轻时将类设置为className__light,否则设置为className__dark。
在所有情况下,例如性能或所需时间,哪一个更好?
【问题讨论】:
-
我在我的应用程序(Angular,但应该基本相同)中通过更改附加到
body标记的类来执行此操作。然后我为每个主题“dark.scss”和“light.scss”有两个文件,在每个文件的开头我有body.lightTheme {...或body.darkTheme {...。我有一个选择,当我选择一个特定的主题时,我正在用新的类替换页面的body中的当前类。我希望这对你有所帮助:-) -
@decebal 正如我在问题中所说的,这是我的一种方法,但我必须将
!important设置为dark.scss中的样式,因为我的灯光样式是在组件中定义的,并且它们的范围如此如果我不设置!important,dark.scss中的样式将不起作用,因为首选范围样式。 -
对不起,我错过了。我在主题文件中设置了所有规则,这样我就可以更改 body 类并更新所有内容。这对我来说是最简单和干净的解决方案。我使用 Angular Material(类似于 Vuetify - 如果您正在使用它)并且我将所有样式设置为每个主题的通用样式,因为例如我希望提交按钮在整个应用程序上看起来相同。但无论如何,这主要取决于你想用你的应用程序实现什么。祝你好运!
标签: javascript css vue.js themes