<
学习less的笔记
>
上一篇

在项目中使用CDN
下一篇

使用nvm切换node版本
很久之前学习less的笔记~😋

原本的笔记有点多且繁琐~自己看的都有点晕,所以只选部分😅

Less函数手册 |参考 |参考 SimonMa |中文文档

循环 Loops

在less中,mixin可以调用自身, 当一个mixin递归调用自己,就能形成循环结构

遍历

在less中遍历数组

  @colors: red, green, blue, black; // 定义数组元素

  .for(@data, @i: 1) when(@i =< length(@data)) { // length(@data) 获取数组长度
      @item: extract(@data, @i); // 数组元素取值
      div {
          background: @item;
      }
      .for(@data, (@i + 1));
  }

  .for(@colors);


  // 输出css
  div {
    background: red;
  }
  div {
    background: green;
  }
  div {
    background: blue;
  }
  div {
    background: black;
  }

合并

可以将同一个属性的值合并,比如 backgroundtransform 之类的属性

拼接字符串

在less中写js

{
  test: /\.less/,
  exclude: /node_modules/,
  use: ['style-loader', 'css-loader', {
    loader: 'less-loader',
    options: {
      javascriptEnabled: true // 支持js
    }
  }],
}

编写简单的反色方法🍦🍕🌭🌮🌯🥙🍹

颜色工具-TinyColor | antd中还用了贝塞尔曲线的插件-bezier-easing,我们不用呢!🤔

引入tinyColor:

  1. tinyColor.js写入mixins中,从而将tinyColor.js转化为tinyColor.less,最后在其他less文件中引入 tinyColor.less。(这里的巨坑就是,我以为less文件可以引入js文件或者引入安装的插件,🤣🤣🤣🤣🤣)
  // tinyColor.less 创建tinyColor.less文件

  .tinyColorMixin() {
    @function: ~`(tinyColor.js文件复制进来)` 
  }

  .tinyColorMixin() // 创建mixin,并执行
  1. 直接复制antd的tinyColor.less文件

  2. 直接引入antd的tinyColor.less文件

@import '~antd/lib/style/color/tinyColor.less';

编写自动调色函数

.palette-mixin() {
  @functions: ~`(
      function() {this.contrastColor = function(color) {var colorRgb = tinycolor(color) .toRgb() ;
        var light = (colorRgb.r * 0.2126 + colorRgb.g * 0.7152 + colorRgb.b * 0.0722) / 255; var
        limit = (light - 0.5) * -999999; return tinycolor.fromRatio({r: 0, g: 0, b: limit})
        .toHslString()}}
    )
    () `;
}

.palette-mixin()
.palette-mixin() {
  @functions: ~`(
      function() {this.contrastColor = function(color) {var colorRgb = tinycolor(color) .toRgb() ;
        var colorJudge = colorRgb.r * 0.299 + colorRgb.g * 0.578 + colorRgb.b * 0.114;
        if(colorJudge >= 192) {return tinycolor('#000')}else if(colorJudge < 192){return tinycolor(
          '#fff'
        )}}}
    )
    () `;
}
.palette-mixin();
Top
Foot