• 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{
        // 使用变量时,如果是直接使用,则以 @变量名 的形式使用即可
         @w;
        color: @color;
    }
    
    // 作为类名,或者一部分值使用时必须以 @{变量名} 的形式使用
    .@{a}{
         @w;
        background-color: url("../@{a}/goose.jpg");
    }
    
    @b:200px;
    @b:500px;
    
    div{
        // 变量发生重名时,会优先使用比较近的变量
        @b: 115px;
         @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 &{
             100px;
        }
    }
    
    .p1{
         100px;
        height: 200px;
    }
    
    // :extend() 对当前选择器扩展指定选择器的样式(选择器分组)
    // 相当于并集选择器
    // 即.p1, .p2{ 100px;height: 200px;}
    .p2:extend(.p1){
        color: skyblue;
    }
    
    .p3{
        // 直接对指定的样式进行引用,相当于复制
        // mixin 混合
        .p1(); //不推荐
    }
    
    // 使用类选择器时,可以在选择器后边添加一个括号,实际上是创建了一个mixins
    .p4(){
         100px;
        height: 100px;
        background-color: #bfa;
    }
    
    .p5{
        .p4();
    }

    2.3 混合函数

    // 混合函数:可以设置变量和默认值
    .test(@w: 100px, @h: 200px, @bg-color: red){
         @w;
        height: @h;
        border: 1px solid @bg-color;
    }
    
    div{
        // 调用函数,按顺序传递参数
        // .test();
        .test(@w: 200px);
    }

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

     四、less的补充

    // 可以通过 import 来将其他的less引入到当前的less中
    @import "syntax2.less";
    
    .box1{
        // 在less中所有得数值都可以直接进行运算
        // + - * /
         100px + 100px;
        height: 100px/2;
        background-color: #bfa;
    }

  • 相关阅读:
    Smart Client Architecture and Design Guide
    Duwamish密码分析篇, Part 3
    庆贺发文100篇
    .Net Distributed Application Design Guide
    New Introduction to ASP.NET 2.0 Web Parts Framework
    SPS toplevel Site Collection Administrators and Owners
    来自Ingo Rammer先生的Email关于《Advanced .Net Remoting》
    The newsletter published by Ingo Rammer
    深度探索.Net Remoting基础架构
    信道、接收器、接收链和信道接受提供程序
  • 原文地址:https://www.cnblogs.com/nadou/p/13922802.html
Copyright © 2020-2023  润新知