less——css预处理语言

一、less的由来

若页面多处使用同一属性的同个值,为了便于维护代码,需要采用变量的形式来解决。
虽然css原生也支持变量的设置还有计算函数,但是这些兼容性不太好(针对ie8及以下的版本),因此产生了less。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>less由来</title>
    <style>
        html{
            /* 
                css原生可以支持变量的设置 
                缺点:兼容性差
            */
            --color: red;
            --length: 200px
        }

        .box1{
            /* calc()计算函数 */
            width: calc(200px * 3);
            height: var(--length);
            background-color: var(--color);
        }

        .box2{
            width: var(--length);
            height: var(--length);
            color: var(--color);
        }

        .box3{
            width: var(--length);
            height: var(--length);
            border: 10px solid var(--color);
        }
    </style>
</head>
<body>
    <!--  
        less是一门css的预处理语言
            - less是一个css的增强版,通过less可以编写更少的代码实现更强大的功能 
            - less的语法大体上和css一致,但less中增添了许多对css的扩展
                浏览器无法直接执行less代码,要先将less转换为css后再执行
                (工具:VSCode——Easy LESS)
    -->
    <div class="box1"></div>
    <div class="box2">less</div>
    <div class="box3"></div>
</body>
</html>

 二、less常用的语法

 2.1 @变量名

// less中的单行注释,注释内容不会被解析到css中
 
/*
   css中的单行注释,注释内容会被解析到css中 
*/
.box1{
    background-color: #bfa;

    .box2{
        background-color: red;
    }

    .box3{
        background-color: orange;
    }
}

// 变量,在变量中可以存储一个任意的值
// 并且可以在需要时,任意地修改变量中的值
// 变量的语法:@变量名
@w:200px;
@color:#bfa;
@a:box5;

.box4{
    // 使用变量时,如果是直接使用,则以 @变量名 的形式使用即可
    width: @w;
    color: @color;
}

// 作为类名,或者一部分值使用时必须以 @{变量名} 的形式使用
.@{a}{
    width: @w;
    background-color: url("../@{a}/goose.jpg");
}

@b:200px;
@b:500px;

div{
    // 变量发生重名时,会优先使用比较近的变量
    @b: 115px;
    width: @b;
    height: @c;
}

// 可以在变量声明前就使用变量(不推荐使用)
@c:335px;

.widget{
    color: #fba;
    // $属性名 
    background-color: $color;
}

 2.2 父元素和扩展

// 父元素和扩展
.box1{
    // 后代选择器 —— .box1 .box2
    .box2{
        background-color: aqua;
    }

    // 子元素选择器 —— .box1>.box2
    >.box3{
        color: red;
    }

    // & 表示外层的父元素
    // 伪类选择器 —— .box1:hover
    &:hover{
        color: blue;
    }

    // div .box1
    div &{
        width: 100px;
    }
}

.p1{
    width: 100px;
    height: 200px;
}

// :extend() 对当前选择器扩展指定选择器的样式(选择器分组)
// 相当于并集选择器
// 即.p1, .p2{width: 100px;height: 200px;}
.p2:extend(.p1){
    color: skyblue;
}

.p3{
    // 直接对指定的样式进行引用,相当于复制
    // mixin 混合
    .p1(); //不推荐
}

// 使用类选择器时,可以在选择器后边添加一个括号,实际上是创建了一个mixins
.p4(){
    width: 100px;
    height: 100px;
    background-color: #bfa;
}

.p5{
    .p4();
}

2.3 混合函数

// 混合函数:可以设置变量和默认值
.test(@w: 100px, @h: 200px, @bg-color: red){
    width: @w;
    height: @h;
    border: 1px solid @bg-color;
}

div{
    // 调用函数,按顺序传递参数
    // .test();
    .test(@w: 200px);
}

 三、less代码在浏览器的检查中如何查看

 四、less的补充

// 可以通过 import 来将其他的less引入到当前的less中
@import "syntax2.less";

.box1{
    // 在less中所有得数值都可以直接进行运算
    // + - * /
    width: 100px + 100px;
    height: 100px/2;
    background-color: #bfa;
}

posted @ 2020-11-06 14:48  娜豆  阅读(240)  评论(0编辑  收藏  举报