Less 变量

上篇文章介绍了什么是 less。根据上篇文章的介绍,了解到 less 只是一种 css 预编译器,它需要通过编译软件对它进行编译之后生成需要的 css,文件。本文介绍如何正确的使用 less。

考拉

首先来讲 less 编译工具:考拉。

考拉是国人开发的一个全平台的 less 的编译软件编译工具,它的网址是 http://koala-app.com/

less 变量

学习变量它nice的变量这样一个概念。那么这节课主要有这么5个知识点,大家需要。

1. 普通的变量

在 less 中,使用 @ 来定义变量:

less 复制代码
@blue: #5B83AD;

#header {
    color: @blue;
}

这里需要注意一下,所谓的变量实际上只是字符串层面的替换而已,所以其实是常量。

2. 选择器和属性名中使用变量

在选择器和属性名中使用变量和将变量作为值不同;这种情况下需要用到@{}的格式。

less 复制代码
@mySelector: width;
.@{mySelector} {
    @{mySelector}: 960px;
    height: 500px;
}

上述 less 代码在编译之后等价于:

css 复制代码
.width {
    width: 960px;
    height: 500px;
}

3. URL 中的变量

一般来说,在 css 中, URL 基本上都是以下面的这种方式使用的:

css 复制代码
body {
    background-image: url("http://example.com/images/1");
}

而在 less 中,可以使用变量替换 http://example.com 这部分,如下所示:

less 复制代码
@baseURL: http://example.com;
body {
    background-image: url("@{baseURL}/images/1");
}

4. 延迟加载

所谓延迟加载,你可以将其等效成 js 中函数的提升,也就是说:无论变量定义在哪里,在编译的时候总是会提升到作用域的最上方,因此下面两种写法是等效的:

less 复制代码
@a: 9%;
@var: @a;

.lazy {
    width: @var;
}

等效于:

less 复制代码
.lazy {
    width: @var;
}

@var: @a;
@a: 9%;

5. 变量的作用域

如果在同一个定义域定义了相同的 less 变量,那么通过提升作用可以知道,后定义的会覆盖先定义的值。而在不同定义域下定义的同名变量,采用的是就近原则生效。

less 复制代码
@var: 0;
.class {
    @var: 1;
    .brass {
        @var: 2;
        three: @var;
        @var: 3;
    }
    one: @var;
}

经过提升之后最内侧的 @var: 3;覆盖了@var: 2;的值;最终结果为:

css 复制代码
.class {
    .brass {
        three: 3;
    }
    one: 1;
}
相关推荐
蜗牛攻城狮4 天前
PostCSS 详解、最佳实践及其与 Less/SCSS 的关系
less·前端开发·postcss·scss
cc蒲公英10 天前
less和sass区别
前端·less·sass
小明记账簿10 天前
利用 Less 循环高效生成多组 CSS 间距工具类
前端·css·less
juma900216 天前
基于 Xilinx K7 325t 的千兆网 UDP 协议实现小记
less
小书包酱18 天前
告别在 vue 中使用公共 less 文件没有提示信息的烦恼
css·vue.js·less
abiao19811 个月前
VUE style标签中添加lang=less属性
前端·vue.js·less
IT从业者张某某1 个月前
less 工具 OpenHarmony PC适配实践
前端·microsoft·less
qq_415216251 个月前
vue3搭建项目yarn+vue3+webpack+less+element-plus
前端·webpack·less
NPE~1 个月前
[Linux命令分享]日志查看 — — less
linux·运维·less·常用命令·日志查看
泷羽Sec-静安1 个月前
Less-9 GET-Blind-Time based-Single Quotes
服务器·前端·数据库·sql·web安全·less