分类: web前端 | 标签: less

less笔记

发表于: 2020-12-23 20:59:28 | 字数统计: 1.3k | 阅读时长预计: 6分钟

简介

CSS 需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用。成这些困难的很大原因源于 CSS 是一门非程序式语言,没有变量、函数、SCOPE(作用域)等概念。LESS/sass 为 Web 开发者带来了福音,它在 CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能,大大简化了 CSS 的编写,并且降低了 CSS 的维护成本,就像它的名称所说的那样,LESS 可以让我们用更少的代码做更多的事情。

(less css预处理器)

本质上,LESS 包含一套自定义的语法及一个解析器,用户根据这些语法定义自己的样式规则,这些规则最终会通过解析器,编译生成对应的 CSS 文件。LESS 并没有裁剪 CSS 原有的特性,更不是用来取代 CSS 的,而是在现有 CSS 语法的基础上,为 CSS 加入程序式语言的特性。

less仅仅是写css的另一种方式,写出来的less文件浏览器也不识别,所以啊,我们写完了less文件,还需要通过less解析器解析成css,最终浏览器引入的还是css文件。

中文官网: http://lesscss.cn/

less的编译

如何把less文件变成css文件

引入less.js文件(了解)

<!-- 必须指定rel的类型是stylesheet/less --> 
<link rel="stylesheet/less" href="less/01.less">
<script src="less.js"></script>

注意:这种方式必须在http协议下运行,因为本质上less.js是通过ajax请求了less文件,进行编译。

缺点:

  1. 需要多引入一个less.js文件
  2. 需要多一次http请求,file协议打开无效
  3. 无法实时的看到编译的结果。

使用考拉(了解)

koala是一个前端预处理器语言(less/sass)图形编译工具,支持Less、Sass、Compass、CoffeeScript,帮助web开发者更高效地使用它们进行开发。跨平台运行,完美兼容windows、linux、mac。

考拉官网

使用步骤:

  1. less文件夹拖进去
  2. 会在当前目录生成一个css目录

win7上不好用,不知道为啥。

VScode 安装 Easy LESS 插件

image-20220702100930516

安装之后的使用:

第一步:新增demo.less文件

第二步:用less语法编写

第三步:每次保存会自动生成demo.css文件

less语法

变量和注释

【less】

// 作用:定义一些变量,然后在用的地方引入即可
// 这种注释是less的,编译后css中没有
/* 这种注释css的,编译后css可以看到 */

@color: deeppink; // 1.定义变量

.box {
    width: 100px;
    height: 100px;
    background: @color; // 2.使用变量
}

【css】

/* 这种注释css的,编译后css可以看到 */
.box {
  width: 100px;
  height: 100px;
  background: deeppink;
}

混入

作用:可以把多个样式选择器整合,形成一个新的样式选择器

缺点:写了很多类,但是都编译到css文件中了

【less】

.btn {
    width: 200px;
    height: 50px;
    background-color: #fff;
}

.btn_border {
    border: 1px solid #ccc;
}

.btn_danger {
    background-color: red;
}

//写法1
button {
    .btn();
    .btn_border();
    .btn_danger();
}

//写法2 省略括号,这种写法更好理解,推荐这种
button {
    .btn;
    .btn_border;
    .btn_danger;
}

【css】

.btn {
  width: 200px;
  height: 50px;
  background-color: #fff;
}
.btn_border {
  border: 1px solid #ccc;
}
.btn_danger {
  background-color: red;
}
button {
  width: 200px;
  height: 50px;
  background-color: #fff;
  border: 1px solid #ccc;
  background-color: red;
}
button {
  width: 200px;
  height: 50px;
  background-color: #fff;
  border: 1px solid #ccc;
  background-color: red;
}

混入函数

和上面的混入类似,【但是混入函数不会都编译到css文件中】

【less】

//a.不带参数的混入函数
.pcss1() {
    color: deepskyblue;
}

//b.带参数的混入函数,定义了参数,调用的时候必须传入参数,否则会报错
.pcss2(@bordercolor) {
    border: 1px solid @bordercolor;
}

//c.带参数的函数的默认值
.pcss3(@height: 60px) {
    height: @height;
}

p {
    .pcss1();
    .pcss2(red);
    .pcss3();
    //.pcss3(100px);
}

【css】

p {
  color: deepskyblue;
  border: 1px solid red;
  height: 60px;
}

嵌套和&号

可以层级写样式,增加代码可读性

使用伪类的时候 可以使用& 表示自己

【less】

ul {
    list-style: none;
    li {
        float: left;
        width: 100px;
        height: 100px;
        a {
            color: deeppink;
            &:hover {//`&` 表示自己,也就是a标签
                color: green;
            }
        }
    }
}

【css】

ul {
  list-style: none;
}
ul li {
  float: left;
  width: 100px;
  height: 100px;
}
ul li a {
  color: deeppink;
}
ul li a:hover {
  color: green;
}

模块化

模块化的思想,分模块进行管理这些less文件,最终只需要使用import将less引入到一起即可。

注意:导入的时候不需要加上.less后缀

【a.less】

.box1 {
    width: 100px;
    height: 100px;
    background: deeppink;
}

【b.less】

.box2 {
    width: 100px;
    height: 100px;
    background: deeppink;
}

【ab.less】

@import './a.less';
@import './b.less';

【ab.css】

.box1 {
  width: 100px;
  height: 100px;
  background: deeppink;
}
.box2 {
  width: 100px;
  height: 100px;
  background: deeppink;
}

运算

【less】

h1 {
    height: 120+2px;
    height: 120-2px;
    height: 120*2px;
    //height: 120/2px;//除法不好使
}

【css】

h1 {
  height: 122px;
  height: 118px;
  height: 240px;
}

函数

在我们的 CSS 中充斥着大量的数值型的 value,less可以直接支持运算,也提供了一系列的函数提供给我们使用。

http://www.1024i.com/demo/less/reference.html

------ 本文结束,感谢您的阅读 ------
本文作者: 贺刘芳
版权声明: 本文采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。