项目中很多样式是公用的,比如常见的配色色值,为了方便后期修改维护方便,会把它们定义成变量,统一定义在less文件中,然后在需要用到的组件中引入使用。
image.png

1.样式文件准备

src/styles/variables.less

  1. // 主题
  2. @xtxColor:#27BA9B;
  3. // 辅助
  4. @helpColor:#E26237;
  5. // 成功
  6. @sucColor:#1DC779;
  7. // 警告
  8. @warnColor:#FFB302;
  9. // 价格
  10. @priceColor:#CF4444;

src/styles/mixins.less

  1. // 鼠标经过上移阴影动画
  2. .hoverShadow () {
  3. transition: all .5s;
  4. &:hover {
  5. transform: translate3d(0,-3px,0);
  6. box-shadow: 0 3px 8px rgba(0,0,0,0.2);
  7. }
  8. }

less混入就是:声明一段css代码(选择器包裹的代码)或者函数,在其他css选择器调用,可复用包裹的代码。

2.测试使用

在任意组件中,引入上边定义的less变量和混合,测试使用

  1. <style lang="less">
  2. @import '~@/styles/variables.less';
  3. @import '~@/styles/mixins.less';
  4. .container{
  5. color: @xtxColor;
  6. .hoverShadow();
  7. }
  8. </style>

3.自动注入less文件引用

很多的业务组件都需要使用这些变量,如果我们每一个业务组件都手动引入然后使用的话,开发量巨大

3.1添加一个vuecli的插件

vuecli的插件,不是npm包
在当前项目下执行一下命令vue add style-resources-loader
image.png
安装完毕后会在vue.config.js中自动添加配置

  1. module.exports = {
  2. pluginOptions: {
  3. 'style-resources-loader': {
  4. preProcessor: 'less',
  5. patterns: []
  6. }
  7. }
  8. }

3.2注入less地址文件

在上一步插件自动添加的vue.config.js文件中,补充patterns设置。这里需要填入希望被自动导入的less文件地址。

  1. + const path = require('path')
  2. module.exports = {
  3. pluginOptions: {
  4. 'style-resources-loader': {
  5. preProcessor: 'less',
  6. patterns: [
  7. + path.join(__dirname, './src/styles/variables.less'),
  8. + path.join(__dirname, './src/styles/mixins.less')
  9. ]
  10. }
  11. }
  12. }

修改了配置文件,注意重启服务!!!

3.3测试效果

  1. <style lang="less">
  2. // 这里不写,在style-resources-loader插件中使用
  3. // @import '~@/styles/variables.less';
  4. // @import '~@/styles/mixins.less';
  5. .container{
  6. color: @xtxColor;
  7. .hoverShadow();
  8. }
  9. </style>