十分钟带你学会Less预编译器

CSS预编译器 Less

我们在书写css样式的时候经常会被权重给恶心到要吐血。所以预编译器应运而生。预编译器它就是使用一种更加优雅的方式来书写css代码,通过编译器,将其转换为可以被浏览器识别的传统css代码

在这里插入图片描述
目前,最流行的预编译器有LESSSASS,由于它们两者特别相似,我们在这里介绍Less

less官网:http://lesscss.org/
sass官网:https://sass-lang.com/

LESS的安装和使用

从我们前面介绍的就可以知道,要使用Less,必须要安装Less编译器

通过npm下载安装

npm i -D less

安装好了less之后,它提供了一个CLI工具lessc,通过该工具即可完成编译lessc Less文件 编译后的文件

lessc index.less index.css

新建一个index.less文件,编写内容如下:

@color: red;
.redcolor {
    color: @color;
}

运行命令:

npx lessc index.less index.css

可以看到编译之后的代码:

.redcolor {
  color: red;
}

LESS的基本使用

  • 变量:变量是通过@符号来表示的。
@color:#f40;
@width:100px;
@height:@width+10px;
.box{
    color:@color;
    width:@width;
    height:@height
}
//会被编译为:
.box{
    color:#f40;
    width:100px;
    height:110px;
}
  • 混合:类似封装一个方法,每次调用的时候,相当于使用这些属性
.border { //混合方法
  border: 1px solid red;
}
.box1{
  color: #000;
  .bordered();
}
.box2{
  color: #f40;
  .bordered();
}
//会被编译为:
.box1{
  color: #000;
  border: 1px solid red;
}
.box2{
  color: #f40;
  border: 1px solid red;
}
  • 嵌套:less语法中最nice的功能。一看代码就明白。&符号表示当前选择器的父级
.box{
  color: #000;
  .content{
    font-size: 14px;
    color: red;
    .title{
      font-size: 20px;
      font-weight: bolder;
      &:hover{
        color: blue;
      }
    }
  }
}
//会被编译为:
.box {
  color: #000;
}
.box .content {
  font-size: 14px;
  color: red;
}
.box .content .title {
  font-size: 20px;
  font-weight: bolder;
}
.box .content .title:hover {
  color: blue;
}

  • 运算:算术运算符 +-*/ 可以对任何数字、颜色或变量进行运算。计算的结果以最左侧操作数的单位类型为准。如果单位换算无效或失去意义,则忽略单位。
@width:100px;
@height:@width * 2 + 10 //210px;
@color:#224488;
@color2:@color/ 2 //#112244
  • 函数:可以传递参数。Less 内置了多种函数用于转换颜色、处理字符串、算术运算等
.center(@type:absolute){
  position: @type;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}
.box{
  .center(relative)
}
//会被编译为:
.box {
  position: relative;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

Less内置函数:更多内置函数,查看官方文档。简单举例:

//if:如果2大于1,则显示0,否则3px.和三目运算符有些类似
//iscolor:传入一个值,判断是否是颜色。
@some: foo;
div {
    margin: if((2 > 1), 0, 3px);
    color:  if((iscolor(@some)), @some, black);
}
//会被编译为:
div {
  margin: 0;
  color: black;
}
  • 作用域:和js一样,Less也有作用域
@color: red;
.box {
  @color: white;
  .content {
    color: @color; // white
  }
}
//会被编译为:
.box .content {
  color: white;
}
  • 注释:块注释会被保留,因为和css注释相同,行注释会直接抹去
/* 
 * 块注释
 */
 @color: red;

 // 行注释
 @color: white;
 .box{
   color: @color;
 }

//会被编译为------------------------
/* 
 * 块注释
 */
.box {
  color: white;
}
  • 导入:可以用@import来导入外部的less样式。比如导入我们写的基础样式

base.less文件

@color:red;

index.less文件

@import "./base.less";
 .box{
   color: @color;
 }

最后会被编译为:

.box {
  color: red;
}

看到这里,已经足够我们应对日常开发中的less语法,如果你想更深度的学习。去官网看看吧

发布了33 篇原创文章 · 获赞 105 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Newbie___/article/details/104898436