vue一键换肤

vue一键换肤
寒霜
本文只涉及到颜色主题和icon更换
1、颜色更换
通过class解决,包含字体、字号、字体颜色、背景颜色等,css控制
2、icon 更换
2.1 通过 css background 控制
配置多个css文件,通过覆盖的方式进行控制
//默认黑夜主题
.icon-delete {
background: url("../../static/images/backup.png");
}
//更改为白天主题
.themeDay {
.icon-delete {
background: url("../../static/images/Outlined.png") !important;
}
}
//只需要给非默认主题更高的优先级即可,其他非默认主题同理。因为一时间只能展示一个主题,不会出现多个非默认主题之间的覆盖(只需要保证覆盖掉默认主题即可)
//假如再多一个粉色主题
.themePink {
.icon-delete {
background: url("../../static/images/Outlined_Pink.png") !important;
}
}
2.2 通过变量控制
//写法1
<view class="icon-select-type-container">
<image class="icon-select-type" :src="THEME.style == 'dark' ? `${right}` : `${right_light}`" />
</view>
right: require("@static/images/right.png"),
right_light: require("@static/images/icon_go.png"),
//写法2
<view class="icon-select-type-container">
<image
class="icon-select-type"
:src="require(`@static/images/${THEME.style == 'dark' ? `${right_light_2}` : `${right_light_1}`}.png`)" />
</view>
right_light_1: 'icon_go',
right_light_2: 'right',