Less预处理器教程

news2024/11/14 17:57:41

学习源码可以看我的个人前端学习笔记 (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文件,以查看效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1464347.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用Python插入页码到PDF文档

页码是许多类型文件中的重要内容&#xff0c;它能方便读者在文档中的导航。在创建PDF文档时&#xff0c;添加页码对于组织和引用内容特别有用。在本文中&#xff0c;我们将探讨如何利用Python程序高效地插入页码到PDF文档中&#xff0c;简化工作流程并创建出精美、结构合理的PD…

Eureka注册中心(黑马学习笔记)

Eureka注册中心 假如我们的服务提供者user-service部署了多个实例&#xff0c;如图&#xff1a; 大家思考几个问题&#xff1a; order-service在发起远程调用的时候&#xff0c;该如何得知user-service实例的ip地址和端口&#xff1f; 有多个user-service实例地址&#xff0c…

从 Elasticsearch 到 Apache Doris,统一日志检索与报表分析,360 企业安全浏览器的数据架构升级实践

导读&#xff1a;随着 360 企业安全浏览器用户规模的不断扩张&#xff0c;浏览器短时间内会产生大量的日志数据。为了提供更好的日志数据服务&#xff0c;360 企业安全浏览器设计了统一运维管理平台&#xff0c;并引入 Apache Doris 替代了 Elasticsearch&#xff0c;实现日志检…

Sulfo Cyanine3 dCTP,磺化-Cy3-dCTP,可以实时监测DNA的合成过程

Sulfo-Cy3-dCTP&#xff0c;Sulfo Cyanine3 dCTP&#xff0c;磺化-Cy3-dCTP&#xff0c;可以实时监测DNA的合成过程 您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;Sulfo-Cy3-dCTP&#xff0c;Sulfo Cyanine3 dCTP&#xff0c;磺化-Cy3-dCTP 一、基本信息 产品简…

隐藏饿了么el-select组件的el-select-dropdown部分,只使用el-select的显示框

隐藏饿了么el-select组件的el-select-dropdown部分,只使用el-select的显示框 问题: 由于el-select组件的el-select-dropdown部分是自动插入在最外层Body上的&#xff0c;所以在当前组件的scoped中让el-select-dropdown组件display:none不会生效所以需要&#xff1a; :popper-…

企业数字化转型必备:大数据如何助力企业腾飞?

随着数字技术的迅猛发展&#xff0c;企业数字化转型已经成为一种不可逆转的趋势。在这个过程中&#xff0c;大数据扮演了至关重要的角色。那么&#xff0c;大数据究竟如何助力企业腾飞呢&#xff1f;接下来&#xff0c;我们将从多个角度深入剖析。 一、大数据助力企业精准决策 …

【MySQL】数据库索引详解 | 聚簇索引 | 最左匹配原则 | 索引的优缺点

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

糖尿病性视网膜病变(DR)的自动化检测和分期

糖尿病性视网膜病变&#xff08;DR&#xff09;的自动化检测和分期 提出背景DR的阶段及其特征 历年解法计算机视觉方法多分类方法 新的解法深度学习方法迁移学习大模型多模型集成全流程分析 总结特征1&#xff1a;图像分割特征2&#xff1a;疾病分级特征3&#xff1a;治疗建议生…

邻接矩阵乘法 最短距离

问题一 最短距离 先从一个问题说起&#xff0c;输入 [4, 1, 4, 6, 4, 0, 6]代表依赖关系&#xff0c;从1开始&#xff0c;0代表ROOT节点。第二个元素为1代表第二个term在依赖树上的父节点为第1个term。​ 输出​ [[0 1 0 0 0 0 0]​ [0 0 0 0 0 0 0]​ [0 0 0 0 0 0 0]​ [1 …

【Java从入门到精通】Java Character 类

Java Character 类 Character 类用于对单个字符进行操作。 Character 类在对象中包装一个基本类型 char 的值 实例 char ch a;// Unicode 字符表示形式 char uniChar \u039A; // 字符数组 char[] charArray { a, b, c, d, e }; 然而&#xff0c;在实际开发过程中&#xf…

STM32—触摸键

目录 1 、 电路构成及原理图 2 、编写实现代码 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 此笔记基于朗峰 STM32F103 系列全集成开发板的记录。 1 、 电路构成及原理图 触摸键简单的了解就是一次电容的充放电过程。从原理图可以看出&#xff0c;触摸键 …

ORACLE数据库OCP认证

OCP证书是什么&#xff1f; OCP&#xff0c;全称Oracle Certified Professional&#xff0c;是Oracle公司的Oracle数据库DBA&#xff08;Database Administrator&#xff0c;数据库管理员)认证课程。这是Oracle公司针对数据库管理领域设立的一项认证课程&#xff0c;旨在评估和…

分类预测 | Matlab实现CWT-DSCNN-MSA基于时序特征、cwt小波时频图的双流卷积融合注意力机制的分类预测

分类预测 | Matlab实现CWT-DSCNN-MSA基于时序特征、cwt小波时频图的双流卷积融合注意力机制的分类预测 目录 分类预测 | Matlab实现CWT-DSCNN-MSA基于时序特征、cwt小波时频图的双流卷积融合注意力机制的分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab…

查询数据库的编码集Oracle,MySQL

1、查询数据库的编码集Oracle,MySQL 1.1、oracle select * from v$nls_parameters where parameterNLS_CHARACTERSET; 查询版本&#xff1a;SELECT * FROM v$version 2、MySQL编码集 SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM information_schema.SC…

汇编语言movs指令学习

字符串传送指令(Move String Instruction) movs 该指令是把指针DS:SI所指向的字节、字或双字传送给指针ES:DI所指向内存单元&#xff0c;并根据标志位DF对寄存器DI和SI作相应增减。该指令的执行不影响任何标志位。 记不清这指令是8086就有的&#xff0c;还是386以后新加的&…

洛谷C++简单题小练习day18—牛奶数字游戏,拿放大镜看杂志暴力算法

day18--牛奶数字游戏--2.22 习题概述 题目描述 奶牛们在玩一种数字游戏&#xff0c;Bessie 想让你帮她预测一下结果。游戏开始时&#xff0c;Bessie 将得到一个正整数 N。此时她的分数为 0。 奶牛们按照以下规则对 N 进行变换&#xff1a; 如果 N 是奇数&#xff0c;那么将…

智能科技助力服装业:商品计划管理系统的革命性变革

随着智能科技的飞速发展&#xff0c;服装行业正在经历前所未有的变革。在这股浪潮中&#xff0c;商品计划管理系统的智能化转型成为了行业的核心驱动力。这种变革不仅极大地提高了服装企业的运营效率和市场竞争力&#xff0c;更为整个行业的可持续发展注入了新的活力。 智能商…

ChatGPT 是什么

文章目录 一、ChatGPT 是什么二、ChatGPT的发明者三、ChatGPT的运作方式四、ChatGPT的技术五、ChatGPT的优势六、ChatGPT的局限性七、ChatGPT的应用八、ChatGPT的未来九、总结 一、ChatGPT 是什么 OpenAI的ChatGPT&#xff0c;即Chat Generative Pre-Trained Transformer&…

java数据结构与算法刷题-----LeetCode257. 二叉树的所有路径

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 解题思路 直接使用深度优先遍历每次都将结点记录到路径字符串中如果当前结…

R语言数据分析(三)

R语言数据分析&#xff08;三&#xff09; 文章目录 R语言数据分析&#xff08;三&#xff09;一、可视化步骤1.1 创建ggplot1.2 添加美学和图层1.3 简化代码 二、可视化分布2.1 分类变量2.2 数值变量 三、可视化关系3.1 数值变量和分类变量3.2 两个分类变量3.3 两个数值变量3.…