项目中很多样式是公用的,比如常见的配色色值,为了方便后期修改维护方便,会把它们定义成变量,统一定义在less文件中,然后在需要用到的组件中引入使用。
1.样式文件准备
src/styles/variables.less
// 主题
@xtxColor:#27BA9B;
// 辅助
@helpColor:#E26237;
// 成功
@sucColor:#1DC779;
// 警告
@warnColor:#FFB302;
// 价格
@priceColor:#CF4444;
src/styles/mixins.less
// 鼠标经过上移阴影动画
.hoverShadow () {
transition: all .5s;
&:hover {
transform: translate3d(0,-3px,0);
box-shadow: 0 3px 8px rgba(0,0,0,0.2);
}
}
less混入就是:声明一段css代码(选择器包裹的代码)或者函数,在其他css选择器调用,可复用包裹的代码。
2.测试使用
在任意组件中,引入上边定义的less变量和混合,测试使用
<style lang="less">
@import '~@/styles/variables.less';
@import '~@/styles/mixins.less';
.container{
color: @xtxColor;
.hoverShadow();
}
</style>
3.自动注入less文件引用
很多的业务组件都需要使用这些变量,如果我们每一个业务组件都手动引入然后使用的话,开发量巨大
3.1添加一个vuecli的插件
vuecli的插件,不是npm包
在当前项目下执行一下命令vue add style-resources-loader
安装完毕后会在vue.config.js中自动添加配置
module.exports = {
pluginOptions: {
'style-resources-loader': {
preProcessor: 'less',
patterns: []
}
}
}
3.2注入less地址文件
在上一步插件自动添加的vue.config.js文件中,补充patterns设置。这里需要填入希望被自动导入的less文件地址。
+ const path = require('path')
module.exports = {
pluginOptions: {
'style-resources-loader': {
preProcessor: 'less',
patterns: [
+ path.join(__dirname, './src/styles/variables.less'),
+ path.join(__dirname, './src/styles/mixins.less')
]
}
}
}
3.3测试效果
<style lang="less">
// 这里不写,在style-resources-loader插件中使用
// @import '~@/styles/variables.less';
// @import '~@/styles/mixins.less';
.container{
color: @xtxColor;
.hoverShadow();
}
</style>