Less预处理器教程

news/2024/7/5 10:29:55 标签: less, arcgis, 前端

学习源码可以看我的个人前端学习笔记 (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.niftyadmin.cn/n/5385844.html

相关文章

R语言【raster】——res():获取(或设置)Raster*对象的x和/或y分辨率

Package raster version 3.6-27 Usage xres(x) yres(x) res(x) res(x) <- value Arguments 参数【x】&#xff1a;Raster*对象。 参数【value】&#xff1a;分辨率&#xff08;单个数或两个数的向量&#xff09;。 Value 单个数值或两个数值。 Examples r <- raster…

【计算机网络:DHCP协议】

文章目录 前言一、DHCP是什么&#xff1f;二、DHCP的工作原理1.基本流程发现&#xff08;DISCOVER&#xff09;提供&#xff08;OFFER&#xff09;请求&#xff08;REQUEST&#xff09;确认&#xff08;ACKNOWLEDGEMENT&#xff09; 2.DHCP租约的概念3.DHCP续租过程 三、DHCP服…

Vue3-组合式Api(重点)

阅读文章你可以收获的知识 1.知道setup语法糖的使用和如何实现的 2.知道在vue3中如何定义响应式数据 3.知道在vue3中如何定义一个计算属性&#xff08;computed&#xff09; 4.知道如何在vue3中使用watch来监听数据 5.知道在vue3如何实现父子通信 6.知道vue3如何使用ref函…

【PX4SimulinkGazebo联合仿真】在Simulink中使用ROS2控制无人机进入Offboard模式起飞悬停并在Gazebo中可视化

在Simulink中使用ROS2控制无人机进入Offboard模式起飞悬停并在Gazebo中可视化 系统架构Matlab官方例程Control a Simulated UAV Using ROS 2 and PX4 Bridge运行所需的环境配置PX4&Simulink&Gazebo联合仿真实现方法建立Simulink模型并完成基本配置整体框架各子系统实现…

单调队列-滑动窗口最大值

Problem: 239. 滑动窗口最大值 文章目录 题目思路复杂度Code 题目 输入一个数组nums&#xff0c;滑动窗口k遍历该数组&#xff0c;输出得到的最大值数组&#xff1b; 示例1: 输入&#xff1a;nums [1,3,-1,-3,5,3,6,7], k 3 输出&#xff1a;[3,3,5,5,6,7] 思路 构造一个单调…

Mybatisplus 传参参数为自定义sql, 使用条件构造器作为参数

1 pom依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version> </dependency> 2 mapper 接口文件 List<TBookOrder> searchDiy(Param(Const…

MT8788|MTK8788安卓核心板参数_4G联发科MTK模块

MT8788核心板是一款功能强大的4G全网通安卓智能模块。该模块采用了联发科AIOT芯片平台&#xff0c;具有长达8年的生命周期。MT8788模块内置了12nm制程的八核处理器&#xff0c;包括4个Cortex A73和4个Coretex A53&#xff0c;主频最高可达2.0GHZ。标配内存为4GB64GB&#xff0c…

解决采集时使用selenium被屏蔽的办法

解决采集时使用selenium被屏蔽的办法 实用seleniumbase uc模式 from seleniumbase import Driver driver Driver(ucTrue) # 使用UC模式UC模式是基于undetected-chromedriver 但做了一些优化更新&#xff0c;使用起来更方便 官方例子&#xff1a; from seleniumbase import …