游乐游手机版
首页/AI教程/文章详情

Less基本使用教程:从入门到实战详解

时间:2026-06-13 17:39
Less是CSS的进化版,支持变量、混合、嵌套、运算等多种编程特性,显著提升开发效率与代码可维护性。安装需Node js环境,使用lessc命令编译 less文件为CSS。核心功能涵盖变量、嵌套、混合、运算、函数、映射等,极大简化样式开发。

Less(全称 Leaner Stylesheets,即精简样式表)本质上就是 CSS 的进化版,一个向后兼容的扩展工具。它把 CSS 开发带入了更高的维度——不只是在样式表上写规则,而是真正拥有了变量、计算、嵌套这些编程语言才有的能力。简单说,就是让你写 CSS 的效率和可维护性上一个大台阶。这篇文章会把 Less 的核心用法和配置逻辑,从头到尾讲清楚,帮助前端开发者快速上手这款常用的 CSS 预处理器。

安装

想跑起来 Less,前提是你的机器上已经装好了 Node.js 环境。然后在命令行里敲一行代码,全局安装就搞定了:

npm install less -g

装完之后,试试在终端运行 lessc -v。如果能顺利打出版本号,说明安装这一步已经完成了,你可以开始体验 Less 的编译与样式编写。

编译运行

在 VSCode 或者其他编辑器里新建一个以 .less 结尾的文件,然后往里面扔一段 Less 风格的代码,比如这样:

@width: 10px;
@height: @width + 10px;

#header {
  width: @width;
  height: @height;
}

文件写好后,打开终端用 lessc 命令把它编译成标准的 .css 文件。格式就是:
lessc [option option=parameter ...] [destination]

举个例子,要把 index.less 变成 index.css,就这么写:

lessc index.less index.css

编译完成,一个可用的 CSS 文件就生成好了。具体看看下图会更直观:

Less 的基本使用,给你介绍的明明白白

基本用法

变量(Variables)

@ 符号来声明变量并直接使用,方便得很:

@width: 10px;
@height: @width + 10px;

#header {
  width: @width;
  height: @height;
}

编译后输出:

#header {
  width: 10px;
  height: 20px;
}

混合(Mixins)

混合这个概念,说白了就是让你在一个规则集里直接引用另一个规则集的属性,实现样式的复用。比如你定义了一个类叫 .bordered

.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}

然后你希望在别的地方也用到这段样式,直接往里“混入”这个类的名字就行:

#menu a {
  color: #111;
  .bordered();
}

.post a {
  color: red;
  .bordered();
}

这样 .bordered 里的所有样式就自动被复制到了 #menu a.post a 里面。另外,#ids 也能当作 mixin 来用,灵活度很高。

嵌套(Nesting)

嵌套可以说是 Less 最打动人心的功能之一——它允许你像写 HTML 结构一样去写 CSS,大幅提升代码可读性与组织性。原来需要这样一层层写:

#header {
  color: black;
}
#header .na vigation {
  font-size: 12px;
}
#header .logo {
  width: 300px;
}

到了 Less 里,可以直接这么嵌套着写:

#header {
  color: black;
  .na vigation {
    font-size: 12px;
  }
  .logo {
    width: 300px;
  }
}

这种写法不仅简洁,并且一眼就能看出层级关系,和 HTML 的结构天然对应,尤其适合维护复杂布局。

嵌套还能用来处理伪类和伪元素,使用 & 符号来表示当前选择器的父级。像下面这个经典的 clearfix hack:

.clearfix {
  display: block;
  zoom: 1;

  &:after {
    content: " ";
    display: block;
    font-size: 0;
    height: 0;
    clear: both;
    visibility: hidden;
  }
}

嵌套规则和冒泡

除了选择器嵌套,像 @media@supports 这类 @ 规则也可以进行嵌套。它们会被自动“冒泡”到顶部,并且保持相对顺序不乱,让响应式设计更直观:

.component {
  width: 300px;
  @media (min-width: 768px) {
    width: 600px;
    @media (min-resolution: 192dpi) {
      background-image: url(/img/retina2x.png);
    }
  }
  @media (min-width: 1280px) {
    width: 800px;
  }
}

编译后的输出:

.component {
  width: 300px;
}
@media (min-width: 768px) {
  .component {
    width: 600px;
  }
}
@media (min-width: 768px) and (min-resolution: 192dpi) {
  .component {
    background-image: url(/img/retina2x.png);
  }
}
@media (min-width: 1280px) {
  .component {
    width: 800px;
  }
}

运算(Operations)

在 Less 里,+-*/ 这些算术符号不只是用来给数字做加减乘除,颜色和变量也能参与运算。运算时,如果单位能换算,Less 会自动进行;结果单位默认取最左侧操作数的类型:

// 数字转换为相同的单位
@convert: 5cm + 10mm;  // 返回 6cm

@conversion-2: 2 - 3cm - 5mm;  // 结果是 -1.5cm

// 单位换算无效时,忽略单位
@incompatible-units: 2 + 5px - 3cm;  // 结果是 4px

// 带变量的示例
@base: 5%;
@filler: @base * 2;  // 返回 10%
@other: @base + @filler;  // 结果是 15%

需要注意,乘法和除法在单位处理上简单粗暴:它只做数值运算,单位按照左侧操作数的单位赋值。比如:

@base: 2cm * 3mm;  // 结果是6cm

颜色一样可以做运算:

@color: (#224488 / 2);  // 结果是 #112244
background-color: #112244 + #111;  // 结果是 #223355

不过实话实说,对颜色做运算虽然可行,但在实际项目中,Less 提供的色彩函数往往更顺手,也更容易控制。

calc() 特例

有一点必须提一下:从 Less 3.0 开始,calc() 里是不会自动计算数学表达式的——它只处理变量和嵌套函数的部分。比如:

@var: 50vh/2;
width: calc(50% + (@var - 20px));  // 结果是 calc(50% + (25vh - 20px))

转义(Escaping)

有些时候你需要原封不动地输出某些字符,就可以用转义。任何被 ~"anything"~'anything' 包裹的内容都会被当作字符串直接输出,常用于通过变量传递媒体查询等场景:

@min768: ~"(min-width: 768px)";

.element {
  @media @min768 {
    font-size: 1.2rem;
  }
}

输出结果:

@media (min-width: 768px) {
  .element {
    font-size: 1.2rem;
  }
}

当然,在 Less 3.5 版本之后,很多场景下你已经不需要这么麻烦了,可以直接这样写:

@min768: (min-width: 768px);
.element {
  @media @min768 {
    font-size: 1.2rem;
  }
}

函数(Functions)

Less 内置了一系列实用函数,用来处理颜色、字符串和数学计算等常见需求。比方说,用 percentage 把 0.5 转成 50%,用 saturate 把颜色饱和度提高 5%,再配合 spinlighten 灵活调整背景色:

@base: #f04615;
@width: 0.5;

.class {
  width: percentage(@width); // 返回 `50%`
  color: saturate(@base, 5%);
  background-color: spin(lighten(@base, 25%), 8);
}

命名空间和访问器

请别将它和 CSS 中的 @namespace 或命名空间选择器混为一谈。

很多时候我们希望把相关的 mixin 分个组,像是在一个 #bundle 命名空间下集中管理,方便以后复用:

#bundle() {
  .button {
    display: block;
    border: 1px solid black;
    background-color: grey;
    &:hover {
      background-color: white;
    }
  }
  .tab { /* ... */ }
  .citation { /* ... */ }
}

现在如果想在 #header a 里用上 .button 的样式,直接这样引用:

#header a {
  color: orange;
  #bundle.button();  // 也可以写成 #bundle > .button
}

顺便提醒一句:如果不想让命名空间本身出现在最终的 CSS 里,只需要在命名空间后加上 (),比如 #bundle(),这样就不会输出对应的选择器。

映射(Maps)

Less 3.5 之后,mixin 和规则集可以直接当“值映射”来用,像字典键值对一样方便,适合管理主题变量:

#colors() {
  primary: blue;
  secondary: green;
}

.button {
  color: #colors[primary];
  border: 1px solid #colors[secondary];
}

输出结果:

.button {
  color: blue;
  border: 1px solid green;
}

作用域(Scope)

Less 的作用域规则和 CSS 很像——变量先找本地,本地没有就往上找“父级作用域”:

@var: red;

#page {
  @var: white;
  #header {
    color: @var; // white
  }
}

和 CSS 自定义属性一样,mixin 和变量定义不一定要写在使用的代码前面,以下代码最终结果和上面完全一致:

@var: red;

#page {
  #header {
    color: @var; // white
  }
  @var: white;
}

注释(Comments)

Less 支持两种注释写法:块级注释和单行注释。块注释会保留到编译后的 CSS 中,而单行注释则会被完全忽略:

/* 一个块注释
 * 样式注释!
 */
@var: red;

// 单行注释
@var: white;

导入(Importing)

导入功能和你想的差不多。导入 .less 文件后,里面的变量和 mixin 直接就能用。 .less 文件的扩展名其实可以省略,方便模块化管理:

@import "library"; // library.less
@import "typo.css";

总结

整体看下来,Less 的这些基础用法在实际项目开发中几乎每天都能用到。从变量到嵌套,从 mixin 到运算,每个功能都在解决具体的工程痛点,能显著提升样式编写的效率与可维护性。如果后续想深入了解更多细节,官方文档或者社区资源都是不错的选择,帮助你进一步掌握这款强大的 CSS 预处理器。

来源:https://apifox.com/apiskills/basic-usage-of-less/
上一篇VSCode中预览Markdown文件的方法 下一篇小班绘本PPT下载:AI生成吸引孩子,提升教学效率
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Windows Docker Desktop RabbitMQ生产级部署完整指南
AI教程 · 2026-06-29

Windows Docker Desktop RabbitMQ生产级部署完整指南

前言 在 Windows 本地开发环境中,直接安装 RabbitMQ 确实颇为周折:需要单独配置 Erlang 运行环境、手动管理环境变量、服务启停全凭手工操作。更令人困扰的是,版本兼容冲突、端口占用、环境不一致等问题层出不穷。笔者见过不少开发者为搭建环境就得耗费整整半天时间。 相比之下,借助 Do

AI搜索重构制造业采购逻辑的阿里云企业级GEOCMS优化实践
AI教程 · 2026-06-29

AI搜索重构制造业采购逻辑的阿里云企业级GEOCMS优化实践

先分享一个切实感受。过去两年,我们与福建制造企业合作较为频繁,发现一个非常突出的现象:超过80%的企业官网,产品参数仍然存放在PDF或图片中。AI爬虫?根本无法抓取。这些企业技术实力不弱、资质证照齐全、应用案例也丰富,但在AI搜索这一全新战场上,它们几乎处于隐身状态。 一、一个正在发生的行业变化 A

阿里云Token Plan团队版功能价格与省钱购买指南
AI教程 · 2026-06-29

阿里云Token Plan团队版功能价格与省钱购买指南

阿里云百炼近期推出了名为“Token Plan 团队版”的全新服务,这一服务专为企业与开发者量身打造,定位为AI大模型订阅平台。通过引入Credits作为统一计量单位,将文本生成、图像生成等多模态AI能力纳入单一计费体系,同时无缝兼容主流AI编程工具及智能体(Agent)生态系统。其核心亮点包括:全

阿里云物联网.NET Core客户端位置信息上报
AI教程 · 2026-06-29

阿里云物联网.NET Core客户端位置信息上报

阿里云物联网平台的位置服务并非一个完全独立的功能模块。位置信息可包含二维坐标与三维坐标,而位置数据的来源本质上是借助设备属性进行上传。换言之,若要让设备上报位置,您需先将其视为一个普通属性进行处理。 1)添加二维位置数据 操作过程十分简洁。进入数据分析 → 空间数据可视化 → 二维数据,点击添加,将

年阿里云服务器选型配置与网站部署全攻略
AI教程 · 2026-06-29

年阿里云服务器选型配置与网站部署全攻略

2026年,阿里云服务器生态已高度成熟,形成了清晰的轻量应用服务器与ECS云服务器两大产品阵营。无论你是计划搭建个人博客、企业官网,还是运营电商平台、进行应用开发,基本都能找到理想的解决方案。本指南将从服务器选型、配置选择、部署流程到安全运维,系统梳理2026年最实用的操作要点,帮助你少走弯路,让网