less是一门css扩展语言,是css预处理器,扩展了css的动态特性,在css语法基础上引入了变量,混合,运算和函数等功能

常见的css预处理器有sass,less,stylus

less开发手册:https://less.bootcss.com/

安装less

npm install -g less

检查是否安装成功

lessc -v

或者使用CDN和src导入的方法也都是可以的

例如:

https://cdn.jsdelivr.net/npm/less@4.1.1/dist/less.min.js

less文件

hallo.less

注释

/*块注释*/

// 行注释

变量

变量名命名规范

必须是以@开头

不能包含特殊字符

不能以数字开头

大小写敏感

例如:

@color: #ccc;

#app{
    background-color: @color;
}

less编译

less提供了一个解析器,通过解析器,编译成css文件

例如:

npm

lessc style.less style.css

将style.less编译成style.css文件

或者

vsc插件:Easy LESS(修改保存就自动编译成css文件)

less嵌套

子元素嵌套到父元素上(后代选择器)

#app{
    width: 100px;
    div{
        width: 60px;
    }
}

伪类或者伪元素选择之类的,需要加&连接起来,不加则认为是后代

#app{
    width: 100px;
    a{
        color: #000;
        &:hover{
            color: @color;
        }
        &::before{
             width: 30px;
        }
    }   
}

less运算

数值,颜色,变量都可以参与运算,加减乘除

 @width: 50px;
 #app{
    width: 100px - 10;
    height: 100px * 3;
    div{
        width: (@width / 30) * 6;
    }
}




#app{
    color: #666 - #333;
}

上面得到的是#333

注意:

如果有两个不同单位的值运算,运算结果单位取第一个值的单位

如果有两个值,它们只要一个单位,取该单位作为运算结果单位

运算符中间左右两边要有空格分开

混合

混合(Mixin)可以将一组属性从包含到另一个集合中,例如:

.container{
    max-width: 980px;
    margin-left: auto;
    margin-right: auto;
}
#app{
    .container
}

转义

转义允许使用任意字符串作为属性或者变量值,例如:

@max768: ~"(max-width: 768px)"~
.nav-svg{
    @media @max768{
        display: none;
    }
}

函数

less内置了多个函数,用于算术运算,颜色处理等等

@width: 0.6;
#app{
    width: percentage(@width); // 60%
}

映射

映射支持less3.5以上版本,例如:

#data(){
    width: 100px;
}
#app{
    width: #data[width];
}