修改项目主题
info
注:Lavas Basic 模板并不包含此功能
项目使用 vuetify 作为组件库,根据 vuetify 的实现,主题配置分为两个部分:
项目中主要使用的颜色,其中主要颜色,次要颜色的选择和使用场景可参考 material 设计中的颜色系统。
material 设计中使用的常量包含了通用的背景色,前景色,文字颜色。
开发者在配置文件中定义变量,在开发自身控件时使用,使得更换主题变得非常方便。
配置文件
主题相关的配置文件在 config/theme.js 中,结构如下:
// 定义主题列表const themeList = {// 定义主题名称myTheme: {themeColor: {primary: '#4DBA87',accent: '$blue.lighten-2',secondary: '$grey.darken-3',info: '$blue.base',warning: '$amber.base',error: '$red.accent-2',success: '$green.base'},materialDesign: {'bg-color': '#fff','fg-color': '#000','text-color': '#000','primary-text-percent': .87,'secondary-text-percent': .54,'disabledORhints-text-percent': .38,'divider-percent': .12,'active-icon-percent': .54,'inactive-icon-percent': .38}}};module.exports = {theme: themeList.myTheme // 和主题列表中的主题名称对应};
在 themeList 里可以定义多个主题,每个主题包含两部分:
themeColor
primary主要颜色,vuetify 中大部分组件以及我们的 app shell 都会大量使用accent通常根据主要颜色调整明暗后生成,以显示层次感secondary次要颜色,通常与主要颜色形成对比info/warning/error/success项目不同状态下定义的颜色,例如 vuetify 在 Alerts 组件中会使用
materialDesign 包含了一系列 material 设计相关的变量
info
以上变量都有默认值,所以开发者无需定义每一个变量,通常只需要关心主要颜色和次要颜色即可。
使用预定义的颜色变量
在上面的配置文件示例中使用到了 accent: '$blue.lighten-2' 来定义颜色,原因是 vuetify 预先定义了一系列 stylus 颜色变量。

使用主题变量
在开发自己的控件时,需要尽量关联以上主题变量。
在具体使用时,不需要在每一个 .vue 文件的样式部分使用 @import 来引入这些变量,直接使用即可,方法如下:
使用 themeColor 中的变量:
background: $theme.primary使用 materialDesign 中的变量:
color: $material-theme.bg-color
info
需要注意的是,使用主题相关的变量时,
:不能够省略,原因是 省略冒号的情况下,stylus 编译器无法区分 hash 和选择器
