文章概述
本篇文章记录less的使用笔记。
概述
Less是一门CSS预处理语言,使用方式类似sass。
参考网站
使用less
- 安装less:
1 | $ yarn -D add less |
- 编译less文件:
less包bin目录中有lessc文件用来执行编译less文件为css文件;
变量
概述
less使用@符号定义和使用变量;
变量定义变量
1 | //1.用一个变量来定义另一个变量; |
变量运算
变量运算: 运算符和变量之间一定要加空格,否则会被认为是变量名;
1 | - 加减法时:以第一个数据的单位为基准; |
示例:
1 | @width: 300px; |
变量的类型
1 | // 1.值变量: |
样式嵌套
- less支持选择器多级嵌套,但是层级越深效率月低,推荐限制在两个层级;
1 | .box { |
- 嵌套内引用父选择器名,可以使用&代表父选择器名;
1 | #header { |
- 媒体查询嵌套:缺点是每一个元素都会编译出自己的@media样式表,并不会合并。
1 | #main { |
mix混合器方法
mix混合器方法用来优化代码,将多次使用的样式封装到公共的方法来获取,提高代码的质量;
无参方法
无参数混合器方法: 混合器方法必须使用.做前缀;
- 定义时:可以不加括号,但是不推荐。不加括号不仅代表混合器方法,也代表一个样式表,都会被单独编译;
- 使用时:引用时,直接引入选择器或者引入选择器并且加括号,两种引用方式等价;
1 | .mix-card() { |
带参方法
1 | // 1> 普通带参数方法: |
全参关键字
全部参数关键字:arguments
1 | .mix-args(@width,@style,@color) { |
匹配模式
混合器方法的匹配模式: 与面向对象中的多态相似;
- 如果匹配的参数使用常量做标识,使用时会优先使用匹配程度最高的方法,如果匹配程度相同,将合并样式。
- 如果匹配的参数是变量,使用@_标识;
1 | // 示例:显示各个方向上的三角形箭头? |
方法命名空间
使用命名空间方法时,使用符号>标识的直接子方法的父方法不能加括号;
1 | .namespace() { |
数量不定的参数
方法接受数量不定的参数,可以使用…表示,用arguments关键字引用;
1 | .boxShadow(...) { |
批量important
方法使用important,来让混合器方法内部样式批量添加important,直接在方法名后加上important关键字即可;
1 | .level-border { |
条件筛选方法
Less没有if…else表达式,less用when…and/not来做条件匹配;
1 | #condition { |
循环方法
Less并没有提供for循环功能,可以使用递归去实现。
1 | .generate-columns(@n, @i: 1) when (@i =< @n) { |
继承
extend是Less的一个伪类。它可继承所匹配声明中的全部样式。extend扩展样式必须放在选择器最后面;
1 | .animation() { |
引用外部样式
less使用外部样式
- 普通导入并使用外部样式:
1 | @import "outerLess"; |
- 导入外部样式文件,但不编译到css,只会编译引用到的样式【推荐导入方式】:
1 | @import (reference) "outerLess"; |
- @import (once)导入方式,@import语句的默认行为,相同的文件只会被导入一次,随后的导入文件的重复代码都不会解析:
1 | @import (once) "outerLess"; |
- @import (multiple)导入方式,允许导入多个同名文件,每个文件的样式都会被解析一遍,会出现个重复的样式:
1 | @import (multiple) "outerLess"; |
属性避免编译
属性避免编译,可以将属性添加到引号内,并在属性引号前加~
1 | .not-build { |
内置函数
less内置一些辅助函数,详见官网。
示例
1 | #fn-style{ |