Less学习后总结

less是一种动态样式语言,属于css预处理器的范畴,它拓展了css语言,增加了变量,Minxin,函数等特性,是css更易维护和拓展,它既可以在客户端上运行,也可以借助node.js在服务端运行。less的中文官网:http://lesscss.cn/ ,bootstrap中less教程:http://www.bootcss.com/p/lesscss/ 。less编译工具:koala官网:www.koala-app.com。

目录

1、less中的注释

 1)以//开头的注释,不会被编译到css文件中

 2)以/**/包裹的注释会被编译到css文件中

2、less中的变量

 1)作为普通属性值只来使用:直接使用@ping

 2)作为选择器和属性名:#@{selector的值}的形式

 3)变量的延迟加载

 3、less中的嵌套规则

1)基本嵌套规则

 2)&的使用

4、less中的混合:混合就是将一系列属性从一个规则集引入到另一个规则集中的方式

1)普通混合

2)不带输出的混合

3)带参数的混合

4)带参数并且有默认值的混合和带多个参数的混合

5)命名参数

6)匹配模式

7)arguments变量

5、less计算


1、less中的注释

    1)以//开头的注释,不会被编译到css文件中

    2)以/**/包裹的注释会被编译到css文件中

/*这是想暴露出去的注释*/
//这是见不得人的注释

2、less中的变量

使用@来声明一个变量:@ping:ping;

    1)作为普通属性值只来使用:直接使用@ping

    2)作为选择器和属性名:#@{selector的值}的形式

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/less.css"
    </head>
    <body>
        <div id="wrap">
            <div class="inner">
            
            </div>
        </div>
    </body>
    <script src="less/less.min.js"></script>
</html>

//less.css文件


@ping:pink;//作为普通属性值来使用,直接只用@ping
@m:margin;//作为属性名
@selector:#wrap;//作为选择器
*{
    @{m}:0; //作为属性名
    padding:0
}
@{selector}{  //作为选择器
    position:relative;
    width:300px;
    height:400px;
    border:1px solid;
    margin:0 auto;
    .inner{
        position:absolute;
        left:0;
        right:0;
        top:0;
        bottom:0;
        margin:auto;
        background:@ping;//作为普通属性值来使用,直接只用@ping
        height:100px;
        width:100px;
    }
}

    3)变量的延迟加载

less中的变量延迟加载是:less花括号“{}”里面的是块级作用域,
而且使用的变量等这个块级最后一个代码执行完后,才会去读取变量,
变量存在覆盖。同一个块级同名的变量,最后一个总是覆盖前面一个的值

@var:0;

.class{
@var:1;
    .brass{
        @var:2;
        three:@var;//3  这就是变量的延迟加载效果,最后一个变量是@var:3;所以这里的值是3
        @var:3;
    }
    one:@var;
}

 3、less中的嵌套规则

    1)基本嵌套规则

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/less.css"
    </head>
    <body>
        <div id="wrap">
            <div class="inner">
            
            </div>
        </div>
    </body>
    <script src="less/less.min.js"></script>
</html>

//less.css文件


@ping:pink;

*{
    margin:0; 
    padding:0
}
#wrap{  
    position:relative;
    width:300px;
    height:400px;
    border:1px solid;
    margin:0 auto;
    .inner{
        position:absolute;
        left:0;
        right:0;
        top:0;
        bottom:0;
        margin:auto;
        background:@ping;
        height:100px;
        width:100px;
    }
}

     2)&的使用

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/less.css"
    </head>
    <body>
        <div id="wrap">
            <div class="inner">
            
            </div>
        </div>
    </body>
    <script src="less/less.min.js"></script>
</html>

//less.css文件


@ping:pink;

*{
    margin:0; 
    padding:0
}
#wrap{  
    position:relative;
    width:300px;
    height:400px;
    border:1px solid;
    margin:0 auto;
    .inner{
        position:absolute;
        left:0;
        right:0;
        top:0;
        bottom:0;
        margin:auto;
        background:@ping;
        height:100px;
        width:100px;
        &:hover{   //&的使用
            background:ping;
        }
    }
}


//使用&编译后的结果
#warp .inner:hover{
    barckground:pink;
}

4、less中的混合:混合就是将一系列属性从一个规则集引入到另一个规则集中的方式

     1)普通混合

//两个div水平居中,没用混合前,会发现,inner和inner2出现了大量的重复代码,臃肿,而且会编译到css中去

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/less.css"
    </head>
    <body>
        <div id="wrap">
            <div class="inner">
            
            </div>
            <div class="inner2">
            
            </div>
        </div>
    </body>
    <script src="less/less.min.js"></script>
</html>

//less.css文件


@ping:pink;

*{
    margin:0; 
    padding:0
}
#wrap{  
    position:relative;
    width:300px;
    height:400px;
    border:1px solid;
    margin:0 auto;
    .inner{
        position:absolute;
        left:0;
        right:0;
        top:0;
        bottom:0;
        margin:auto;
        background:@ping;
        height:100px;
        width:100px;
      }
    .inner2{
        position:absolute;
        left:0;
        right:0;
        top:0;
        bottom:0;
        margin:auto;
        background:@ping;
        height:100px;
        width:100px;
       }
}

//改善后的方式,普通混合,混合是以“.”开头的
.juzhong{
    position:absolute;
    left:0;
    right:0;
    top:0;
    bottom:0;
    margin:auto;
    background:@ping;
    height:100px;
    width:100px;
}

#wrap{  
    position:relative;
    width:300px;
    height:400px;
    border:1px solid;
    margin:0 auto;
    .inner{
        .juzhong
      }

    .inner2{
        .juzhong
       }
}

    2)不带输出的混合

不带输出混合,在原来的基础之上,在混合名后面加个括号,.juzhong(),这样在编译的时候,混合只出现在less文件中,而不会出现在编译后的css文件中来
.juzhong(){
    position:absolute;
    left:0;
    right:0;
    top:0;
    bottom:0;
    margin:auto;
    background:@ping;
    height:100px;
    width:100px;
}

     3)带参数的混合

.juzhong(@w,@h,@c){
    position:absolute;
    left:0;
    right:0;
    top:0;
    bottom:0;
    margin:auto;
    background:@c;
    height:@h;
    width:@w;
}

#wrap{  
    position:relative;
    width:300px;
    height:400px;
    border:1px solid;
    margin:0 auto;
    .inner{
        .juzhong(100px,100px,ping);
      }

    .inner2{
        .juzhong(200px,200px,deeppink);
       }
}

    4)带参数并且有默认值的混合和带多个参数的混合

.juzhong(@w:10px,@h:10px,@c:ping){
    position:absolute;
    left:0;
    right:0;
    top:0;
    bottom:0;
    margin:auto;
    background:@c;
    height:@h;
    width:@w;
}

#wrap{  
    position:relative;
    width:300px;
    height:400px;
    border:1px solid;
    margin:0 auto;
    .inner{
        .juzhong(100px,100px,ping);
      }

    .inner2{
        .juzhong();
       }
}

     5)命名参数

.juzhong(@w:10px,@h:10px,@c:ping){
    position:absolute;
    left:0;
    right:0;
    top:0;
    bottom:0;
    margin:auto;
    background:@c;
    height:@h;
    width:@w;
}

#wrap{  
    position:relative;
    width:300px;
    height:400px;
    border:1px solid;
    margin:0 auto;
    .inner{
        .juzhong(100px,100px,ping);
      }

    .inner2{
        .juzhong(@c:black);//再给混合名参数传入实参时,指定参数和值。要是没有指定名参数的话,会根据形参的位置顺序进行对应入号
       }
}

    6)匹配模式

//以三角形为例来说明

<html>
    <body>
        <div id="wrap">
            <div class="sjx"></div>
        </div>
    </body>
</html>


.triangle(L,@w,@c){
    width:0px;
    height:0px;
    border-winth:@w;
    boder-style:dashed solid dashed dashed;
    border-color:transparent @c transparent  transparent;
    overflow:hidden;
}

.triangle(R,@w,@c){
    width:0px;
    height:0px;
    border-winth:@w;
    boder-style:dashed solid dashed dashed;
    border-color:transparent transparent  transparent  @c;
    overflow:hidden;
}

.triangle(T,@w,@c){
    width:0px;
    height:0px;
    border-winth:@w;
    boder-style:dashed solid dashed dashed;
    border-color: @c transparent transparent  transparent;
    overflow:hidden;
}

.triangle(B,@w,@c){
    width:0px;
    height:0px;
    border-winth:@w;
    boder-style:dashed solid dashed dashed;
    border-color:transparent transparent @c  transparent;
    overflow:hidden;
}

在使用时这样使用,.triangle(R,40px,ping)里面的第一个参数是匹配模式,相当于命名,指定那个混合名字,匹配的对应的混合,第一个参数叫做匹配符
#wrap .sjx{
    .triangle(R,40px,ping)
}

     7)arguments变量

.border(@1,@2,@3){
    border:@arguments;
}

#wrap .sjx{
    .border(1px,solid,black)
}

5、less计算

#wrap .sjx{
    width:(100 + 100px)  //less中,两个数字运算,只需要一个数字带单位即可
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Sass 和 Less 是两种 CSS 预处理器。 Sass 是一种功能强大的 CSS 预处理器,它为 CSS 增加了变量、嵌套、混合等功能,使得 CSS 的编写更加方便和灵活。 Less 是一种轻量级的 CSS 预处理器,它为 CSS 增加了变量、嵌套、混合、函数等功能,使得 CSS 的编写更加方便和灵活。 Sass 和 Less 都是为了提高 CSS 的编写效率而设计的,但是 Sass 比 Less 功能更为强大,并且 Sass 的语法也更加丰富。 ### 回答2: Sass和Less是两种流行的CSS预处理器,它们的关系可以从以下几个方面来描述。 首先,它们的共同点在于都是为了解决CSS编写过程中的一些不便之处而产生的,例如,样式复用、变量和函数的使用以及嵌套等。它们都提供了一种更具可维护性和可扩展性的方式来编写CSS。 其次,它们的语法有所不同。Sass使用类似于Ruby的语法,使用缩进和冒号来表示层级嵌套和属性赋值。而Less则更接近于常规的CSS写法,使用大括号来表示层级嵌套和属性赋值。因此,对于熟悉CSS语法的开发者来说,可能更容易上手Less。 此外,在功能和特性上,Sass和Less也存在一些差异。Sass提供了更丰富的功能,例如,混合(Mixins)、继承(Inheritance)、扩展(Extension)等,使得样式的重用和扩展更加方便。而Less的功能相对较少,但其学习曲线较平缓,对于一些简单的项目可能会更适合。 最后,在使用上,Sass和Less都需要通过编译器将其转换为常规的CSS文件才能被浏览器所解析和渲染。这意味着,在项目中使用它们时需要安装相应的编译工具,并通过命令行或构建工具来进行编译。 总结来说,Sass和Less都是流行的CSS预处理器,它们都提供了一种更便捷和可维护的方式来编写CSS。它们之间的主要区别在于语法和特性上的差异,以及在一些复杂项目中的选择和适用性。 ### 回答3: Sass与Less是两种流行的CSS预处理器,它们都提供了许多便捷的方式来编写和组织CSS代码。 首先,Sass和Less都允许使用变量、嵌套规则、混合、继承等高级功能,这些特性可以大大简化CSS代码的编写,并提高代码的可维护性。 Sass与Less的主要区别在于它们的语法不同。Sass使用的是缩排式语法,即通过缩进来表示层级关系,而Less则使用的是类似于CSS的语法。对于熟悉CSS的开发者来说,学习和使用Less可能更容易上手,而对于通过其他编程语言学习的开发者来说,Sass的缩排式语法可能更容易理解和使用。 另一个不同点是编译器的选择。Sass有Sass和SCSS两种语法,而Less只有一种语法。在选择编译器方面,Sass可以使用Dart Sass和Node Sass两个主要的编译器,而Less则使用Less.js作为其主要的编译器。 值得注意的是,Sass和Less之间存在相互转换的工具,可以将Sass语法转换为Less语法,或将Less语法转换为Sass语法。这进一步增加了它们的相互关系。 总的来说,Sass和Less都是强大的CSS预处理器,它们在功能和特性上有所不同,但都可以极大地提高CSS代码的开发效率和可维护性。根据个人的喜好和项目需求,选择使用其中之一或两者结合,都可以帮助开发者更好地管理和组织CSS代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草样的年华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值