less--CSS预处理器开发记录

267 阅读1分钟

字符串拼接

出现空格

.size(@val){
    font-size: @val + 'px';
}

按照scss写法,此处可拼接成功,编译正确,但是在less中,会多出来一个空格font-size: 20 'px';

解决:

使用unit单位

font-size: unit(@i,px)

使用*或者+

font-size: @i * 1px;
或者
font-size: @i + 0px;

向 less 拼接单位之类的可以直接是下面这些方式:width: @{变量名}+50px;,并不需要这样:width:(@{变量名} + 50) + px;这样就会多出空格

使用字符串转义函数e()

.font-size-@{i} {
  font-size: e('@{i}px');
}

each的用法

@selectors: 12, 16, 18, 20, 22, 24, 26, 28, 30, 32, 30, 40, 64;

.icon-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    each(@selectors, {
        &.size-@{value} {
            font-size:unit(@value, px);
            line-height:unit(@value, px);
        }
    })
}

编译结果:

.icon-button.size-12 {
  font-size: 12px;
  line-height: 12px;
}
.icon-button.size-16 {
  font-size: 16px;
  line-height: 16px;
}
...

写死的@selectors,此处可继续优化

可以写一个方法function


.icon-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    /**
    * function
    * @n,最大值 
    * @i: index
    */
    .generate-font-size(@n, @i: 1) when (@i =< @n) {
        &.size-@{i} {
            font-size: unit(@i, px);
            line-height: unit(@i, px);
        }

        .generate-font-size(@n, (@i + 2));
    }

    /**调用方法*/
    .generate-font-size(64, 12);
}

编译结果:

icon-button.size-12 {
  font-size: 12px;
  line-height: 12px;
}
icon-button.size-14 {
  font-size: 12px;
  line-height: 12px;
}
...
.icon-button.size-62 {
  font-size: 62px;
  line-height: 62px;
}
.icon-button.size-64 {
  font-size: 64px;
  line-height: 64px;
}

参考链接: