Less预处理器教程
学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes
觉得有帮助的同学,可以点心心支持一下哈
一、Less介绍
less官方文档 lesscss.org/
less中文文档 less.bootcss.com/
less是一种css预处理器,它扩展了css语言,提供了变量、嵌套、混合、运算等功能,使样式表的编写更加灵活和高效,用来书写css的工具。
通俗的说,less是一种专门编写css代码的语言(工具),通过less来编写css代码变得更灵活,更高效,更容易维护。

二、什么是预处理(预编译)
预处理(或预编译)就像在做甜点之前,你有一份简单的食谱(css),但你想要加入一些特殊的烘焙材料,以便更方便地制作美味的点心。less 就是你的烘焙助手,负责在烘焙之前对这份食谱进行一些特殊的处理,通过预处理,让你更轻松、更有创意地制作出令人垂涎欲滴的点心。 预处理就可以将less文件代码转换为css代码。
注意在less文件中,less代码格式并不能被浏览器识别。想将less文件代码变成css代码,必须先将这个less文件预先进行处理。
三、Less的使用
1. 安装Less
首先,确保你的项目中已经安装了less。你可以使用npm安装less:
npm install -g less
或者通过CDN在HTML文件中引入less:
<link rel="stylesheet/less" type="text/css" href="styles.less" />
<script src="https://cdn.jsdelivr.net/npm/less@4" ></script>
2. 基础语法
变量
在LESS中,你可以使用变量来存储和重用值。变量以@符号开头。
@width: 100px;
@height: @width + 10px;#header {width: @width;height: @height;background-color: aqua;
}
在这个例子中,@width是一个变量,它的值是100px。在#header中,我们使用了这个变量来设置背景颜色。
嵌套
LESS允许你使用嵌套规则,使样式表更加清晰和结构化。
nav {ul {margin: 0;padding: 0;list-style: none;}li {display: inline-block;margin-right: 5px;a {text-decoration: none;&:hover {text-decoration: underline;color: red;}}}
}
在这个例子中,nav规则包含了嵌套的ul、li和a规则。这样可以更容易地理解和组织样式。
混合(Mixin)
混合允许你在一个样式规则中引入另一个样式规则的属性。
.border-radius(@radius) {border-radius: @radius;-webkit-border-radius: @radius;-moz-border-radius: @radius;
}.button {.border-radius(5px);
}
在这个例子中,.border-radius是一个混合,它接受一个@radius参数,并在.button规则中使用该混合来添加圆角边框。
导入其他Less文件
你可以使用@import导入其他less文件,将样式表模块化。
@import "reset";
@import "variables";
@import "mixins";
这个例子展示了如何导入名为reset.less、variables.less和mixins.less的文件。这样可以将样式表分割成更小的部分,使代码更易维护。
3. 运算
less允许进行基本的数学运算,这对于处理尺寸和颜色等方面很有用。
@base: 30px;
@padding: @base * 2;.element {margin: @base + 5px;padding: @padding;background-color: aqua;
}
在这个例子中,@padding的值是@base乘以2。less会自动计算结果,你可以在样式规则中直接使用这些运算结果。
4. 函数与操作
less内置了一些函数和操作,用于处理颜色、字符串和其他数据类型。
@color: #3498db;.darken-bg(@color, @percent) {background-color: darken(@color, @percent);
}.container {.darken-bg(@color, 10%);
}
在这个例子中,darken是less内置的颜色函数,我们通过darken函数降低背景颜色的亮度。
5. 条件语句
less支持使用条件语句,根据条件选择应用样式。
@width: 100px;.condiction {width: @width;height: @width;& when (@width > 500) {background-color: red;}& when (@width <= 500) {background-color: blue;}
}
在这个例子中,使用& when语法根据@width的值应用不同的背景颜色。
6. 循环
less还支持循环,允许你重复应用样式。
.loop(@counter) when (@counter > 0) {.class-@{counter} {width: @counter * 10px;}.loop(@counter - 1);
}.loop(5);
在这个例子中,.loop混合使用了递归来创建一系列带有不同宽度的样式类。
7.嵌套规则的作用域
嵌套规则在less中有自己的作用域,这意味着你可以更灵活地组织样式。
#header {h1 {font-size: 26px;}
}#footer {h1 {font-size: 18px;}
}
在这个例子中,h1规则在#header和#footer中分别有不同的作用域。
8.字符串插值
字符串插值允许你在样式中动态使用变量。
@property: color;.widget {@{property}: #888;background-@{property}: red;
}
在这个例子中,使用@{}语法插入变量,创建动态的属性名称。
9. 编译Less
要在本地编译 less 文件,你可以使用 lessc 命令行工具。首先,确保你已经在终端或命令提示符中安装了 less:npm install less -g
然后,在less文件所在目录运行以下命令:
lessc your-styles.less output.css
其中,your-styles.less 是你的less文件,output.css 是输出的css文件。 或者使用构建工具,如webpack、gulp等,配置相应的less插件进行自动编译。 编译完成后,你可以在浏览器中链接到生成的css文件,以查看效果。
相关文章:
Less预处理器教程
学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学,可以点心心支持一下哈 一、Less介绍 less官方文档 lesscss.org/ less中文文档 less.bootcss.com/ less是一种css预处理器,它扩展了css语言,…...
PCL 计算点云AABB包围盒的体积
目录 一、AABB包围盒二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,原文链接。爬虫自重,把自己当个人。 一、AABB包围盒 AABB包围盒又称了 轴对齐包围盒,是点云包围盒里最简单的一种,其计算方法也极其简单。获取包围盒之后,根据包围盒的长宽高进行体积计算即…...
论软件测试工程师 重要性!
在生活中,我们常常会遇到以下几种窘迫时刻: 准备骑共享单车出行,却发现扫码开锁半天,车子都没有反应;手机导航打车,却发现地图定位偏差很大,司机总是跑错地方;买个水,却…...
防御第六次作业-防火墙综合实验(av、url过滤、dns过滤)
目录 拓扑图: 要求: 8 9 10 11 拓扑图 要求 前7个要求在上一篇博客; 8.分公司内部的客户端可以通过域名访问到内部的服务器 9.假设内网用户需要通过外网的web服务器和pop3邮件服务器下载文件和邮件,内网的FTP服务器也需要…...
打码半年,开源一款自定义大屏设计软件!
hi,大家好,我是Tduck马马。 最近我们开源了一款大屏软件-TReport,与大家分享。 TReport是一款基于Vue3技术栈的数据可视化系统,支持静态、动态api等数据源;可用于数据可视化分析、报表分析、海报设计使用。 提供自定…...
云计算基础-大页内存
大页内存功能概述 什么是大页内存 简单来说,就是通过增大操作系统页的大小来减小页表,从而避免快表缺失 主要应用场景 主要运用于内存密集型业务的虚拟机,比如对于运行数据库系统的虚拟机,采用HugePages(大页)后,可…...
数据结构-邻接链表
介绍 邻接矩阵是运用较多的一种储存图的方法,但如果一张网图边数较少,就会出现二维矩阵中大部分数据为0的情况,浪费储存空间 为了避免空间浪费,也可以采用数组与链表结合的方式来存储图 假设有这样一张图 我们可以先用一个数组…...
十三、集合进阶——单列集合 及 数据结构
单列集合 及 数据结构 13.1 集合体系结构13.1.2 单列集合1. Collection2.Collection 的遍历方式迭代器遍历增强for遍历Lambda表达式遍历 3.List集合List集合的特有方法List集合的遍历方式五种遍历方式对比 4.数据结构1).栈2).队列3)数组4)链表小结5&…...
Android | ArcGIS入门
一、概述 ArcGIS是由Esri开发的地理信息系统(GIS)软件。它用于制图、空间分析和数据可视化。ArcGIS允许用户以各种格式创建、管理、分析和共享地理信息。它通常用于城市规划、环境管理和应急响应等领域。该软件包括一系列工具,用于创建地图、…...
dockerfile文件书写
1.dockerfile构建nginx镜像 1.1书写dockerfile文件 mkdir nginx #创建nginx目录 cd nginx vim dockerfile # 修改文件FROM centos # 基础镜像,默认最新的centos8操作系统 MAINTAINER xianchao # 指定镜像的作者信息 RUN rm -rf /etc/yum.repos.d/* # centos8默认…...
蓝桥杯-整数删除
给定一个长度为 N 的整数数列:A1, A2, ... , AN。你要重复以下操作 K 次: 每次选择数列中最小的整数(如果最小值不止一个,选择最靠前的),将其删除。 并把与它相邻的整数加上被删除的数值。 输出 K 次操作后…...
以程序员的视角,看前后端分离的是否必要?
Hello,我是贝格前端工场,本篇分享一个老生常谈的话题,前后端分离是必然趋势,但也是要区分具体的场景,欢迎探讨,关注,有前端开发需求可以私信我,上车了。 一、什么是前后端分离和不分…...
Linux:sed进阶(12)
Linux:shell脚本:基础使用(5)《正则表达式-sed工具》_linux脚本表达式s-CSDN博客https://blog.csdn.net/w14768855/article/details/132347574?ops_request_misc%257B%2522request%255Fid%2522%253A%252217084222871680019707523…...
Linux命令-builtin命令(执行bash内建命令)
说明 用于执行指定的bash内建命令。builtin 命令调用的bash内建命令优先于同名的外部命令及同名的shell函数。 语法 builtin [shell-builtin [arg ...]]参数 shell-builtin(可选):要调用的bash内建命令。 arg(可选)…...
HTML的特殊字符
HTML的特殊字符 有些特殊的字符在 html 文件中是不能直接表示的,例如: 空格,小于号(<),大于号(>),按位与(&)。 空格 示例代码: 运行结果: 由于html 标签就是用 < > 表示的࿰…...
内核移植学习
内核移植 内核移植就是指将RT-Thread内核在不同的芯片架构、不同的板卡上运行起来。 移植可分为CPU架构移植和BSP板级支持包移植两部分。 CPU架构移植 在嵌入式领域有多种不同CPU架构,例如Cortex-M、ARM920T、MIPS32、RISC-V等等。 为了使RT-Thread能够在不同C…...
Mysql 两个日期相减得到指定的格式数据
首先避坑: Mysql 中两个日期直接相减,若在同一天则得到的是秒,否则相减得到的并不是秒,一定要注意。 函数 TIMESTAMPDIFF(unit,begin,end); 函数返回 begin - end 的结果。 其中 begin 和 end 是 DATE 或 DATETIME 表达式。 …...
第六十四天 服务攻防-框架安全CVE复现Apache shiroApache Solr
第六十四天 服务攻防-框架安全&CVE复现Apache shiro&Apache Solr 知识点: 中间件及框架列表: IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic.JBoos,WebSphere, Jenkins,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring, Flask,jQuery等 1、开发框…...
JavaScript 设计模式之享元模式
享元 将一部分共用的方法提取出来作为公用的模块 const Car {getName: function () {return this.name},getPrice: function (price) {return price * 30} }const BMW function (name, price) {this.name namethis.price price } BMW.prototype Car const bmw new BMW(…...
利用故事推动企业变革:如何提升数据分析技能
单一的数据和表格尽管有算法的支撑,但在其表达方式上总会让人感到头疼。当我们需要深入了解企业的盈利能力,或是尝试评估业务的增长机会时,以往都会将精力全部放在分析数字、阅读信息、回顾历史和沟通交流之上,却忽略随之而生成的…...
Win11 Edge浏览器频繁断网?3分钟搞定IPv6设置(附DNS优化技巧)
Win11 Edge浏览器频繁断网?深度解析IPv6兼容性问题与DNS优化实战 最近不少Win11用户反馈Edge浏览器频繁断网,而其他应用却正常运作。这种看似诡异的网络问题,往往源于IPv6协议栈的兼容性故障。作为微软新一代操作系统与浏览器的组合ÿ…...
Autovisor:5分钟快速上手的智慧树自动化学习终极指南
Autovisor:5分钟快速上手的智慧树自动化学习终极指南 【免费下载链接】Autovisor 2025智慧树刷课脚本 基于Python Playwright的自动化程序 [有免安装版] 项目地址: https://gitcode.com/gh_mirrors/au/Autovisor Autovisor是一款专为智慧树在线课程平台设计的…...
智能体设计模式详解 B# 附录G:编程代理
【全景】基于双向协同的能力融合设计 Agent设计模式 V1:基于双向协同的能力融合设计 39种设计模式分层清单 A#0 智能体设计模式全景(上):大模型如何“思考”?(认知视角导论) Agent Design Pattern Catalogue: A Collection of Architectural Patterns for Foundation Mo…...
Nanbeige4.1-3B代码实例:用pipeline接口封装推理服务,支持HTTP API调用
Nanbeige4.1-3B代码实例:用pipeline接口封装推理服务,支持HTTP API调用 1. 引言 如果你正在寻找一个既小巧又强大的开源语言模型,Nanbeige4.1-3B绝对值得你花时间了解一下。这个只有30亿参数的模型,在推理、代码生成和对话任务上…...
自动控制原理实验四:基于MATLAB/Simulink的系统频率特性分析与可视化
1. 实验背景与核心概念 频率特性分析是自动控制领域最实用的工具之一,它就像给系统做"心电图"——通过不同频率的输入信号,观察系统的"心跳反应"。我在工业现场调试时,经常用这种方法快速判断系统稳定性。这次我们要用M…...
终极SyntaxHighlighter CDATA处理指南:如何实现完美的XML兼容性
终极SyntaxHighlighter CDATA处理指南:如何实现完美的XML兼容性 【免费下载链接】syntaxhighlighter SyntaxHighlighter is a fully functional self-contained code syntax highlighter developed in JavaScript. 项目地址: https://gitcode.com/gh_mirrors/sy/s…...
告别默认丑标签!手把手教你用QGIS 3.28自定义地图标注(附Python脚本)
告别默认丑标签!手把手教你用QGIS 3.28自定义地图标注(附Python脚本) 地图可视化不仅是数据的呈现,更是信息传达的艺术。当你精心准备的地理数据因为默认标签样式而显得平庸时,那种挫败感我深有体会——文字太小看不清…...
openclaude:模型接入 Code 工具链
作为一名长期关注人工智能工程化落地的开发者,我深知本地大模型在隐私保护和成本控制上的优势,但往往苦于缺乏像 Claude Code 那样强大的工具调用能力。很多时候,我们拥有强大的模型(如 DeepSeek、Ollama 本地部署)&am…...
Vue3路由缓存优化指南:用keep-alive的include+max实现淘宝级页面保活
Vue3路由缓存优化实战:电商场景下的keep-alive高阶用法 电商平台的商品详情页与列表页频繁切换时,页面重载导致的性能损耗直接影响用户体验。去年双十一大促期间,某头部电商平台通过优化路由缓存策略,将页面切换速度提升了47%&…...
lite-avatar形象库效果展示:教师数字人在直播授课场景中的眼神交互与手势模拟
lite-avatar形象库效果展示:教师数字人在直播授课场景中的眼神交互与手势模拟 1. 引言:当数字人老师走进直播间 想象一下,你正在准备一场面向数千名学生的在线直播课。除了精心准备的课件和讲稿,你还需要一个能清晰传达知识、与…...
