预处理器 Less 的十个语法
Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量、混合(mixin)、函数等功能,让 CSS 更易维护、方便制作主题、扩充。
不过浏览器只能识别 CSS 语言,所以 Less 语言直接运行在浏览器端是不被识别的,需要我们通过一些方式将其先转成 CSS,再将 CSS 资源加载到浏览器中。
如何转换
根据使用场景不同,我们可以分别采用包管理工具/CDN资源的形式。
包管理工具
nodejs + webpack
在工程化项目中,我们使用 webpack 来对项目进行编译时,可以在 module 中定义处理 Less 资源的方式,本质上是使用 Less 工具来对 Less 资源进行转换,但 webpack 中是使用对应的 loader 来处理(需要安装 less、less-loader)。

nodejs + gulp
gulp 以流的形式执行定义的任务,它处理 Less 资源除了 less 工具,还需要安装 gulp-less 。

nodejs + vite
vite 中不需要多做任何配置,只需安装 less 工具。
CDN资源
当不适合使用包管理工具时,可以直接引入CDN的LESS编译代码,对LESS进行实时的处理。
<link rel="stylesheet/less" href="./basic.less">
<script src="https://cdn.jsdelivr.net/npm/less@4"></script>
这里需注意的是,link标签定义的 rel 需要是 stylesheet/less,这样后面的js资源才会将Less语法处理成CSS。
- rel="stylesheet",会主动发送http请求获取css资源
- rel="stylesheet/less",不会发送http请求
- rel="stylesheet/less" + 处理less的js资源,先请求js文件,再发送获取stylesheet的css资源
Less转CSS预览
官方提供了可在线预览Less转CSS代码的工具(Less-preview),在这里可以看到每个语法到底做了怎样的转化,了解后更能按照自己所需要的场景选择。

语法
有了Less资源的处理工具后,可以开始放心大胆的编写Less语法啦~
一、兼容css
Less 是完全兼容 CSS 的,所有 CSS 代码都可以编写,导入的方式和 CSS 的用法是一致的,导入一个 .less 文件,此文件中的所有变量就可以全部使用,如果导入的文件是 .less 扩展名,则可以将扩展名省略掉。

二、使用变量
有些常用的主题色、字体,我们可能会使用一个固定的类名,当需要使用的时候在标签上叠加类名,这样使得类名很多,通过变量的形式,无需再多次添加类。
两种方式达到的效果是一致的,但是 Less 语法可维护性更强一些。

三、嵌套
CSS 中语法不能嵌套,为了保证代码的可阅读性,我们需要按照一定的顺序将样式依次从父元素定义到子元素,但在 Less 中就没有这个困扰,像层层包裹的形式来书写,可以清晰的看到父子级关系。

四、运算
运算这个功能不算好用,并不会像函数一样,比较“智能”的转换成我们需要的结果,比如设置高度,它没有进行单位转换,只是保留第一位的单位,再简单的加减乘除。

五、混入/混合
混入/混合 可以将多个css属性合成一组值(比如设置一行展示,超出长度显示省略号的样式),插入到其它选择器中。通过选择器加上小括号的形式使用,括号内也可以接受参数。
Less编写看起来是代码量变多,但使用起来却是更加灵活,能将它作为一个组合来使用,随意放置到所需要的地方。

六、映射
将混合、映射结合起来使用,可以弥补Less中不能自定义函数的缺陷,比如可以获取混入中定义的宽度,定义px转换rem的函数。

七、继承
语法:&:extend(选择器),生成的代码与混入不同,混入是直接将代码加到后面,继承用的是并集选择器。

开发中用混入更多,因为混入更灵活、语法更简洁、直接插入后面生成的css语法阅读性更强。
八、内置函数
除了 CSS 本身就有的 linear-gradient、calc、rgba,Less 还拓展了一些函数,比如颜色转换 color,数组取值 extract,条件判断 if,向上取整 ceil。

九、作用域
在查找一个变量时,首先在本地查找变量和混合, 如果找不到,则从“父”级作用域继承。

十、注释
在css中,只能使用块注释,在Less中,块注释和行注释都可以使用。

以上就是 Less语法 的介绍, 通过 Less,我们可以编写出更优雅、可读性更强、更易维护的 CSS 代码。下一篇将介绍 SASS的相关使用,更多有关 前端、CSS 、JavaScript 的内容可以参考我其它的博文,持续更新中~
预处理器 Less 的十个语法的更多相关文章
- C语言基本语法——预处理器和预处理指令
1.什么是预处理器 2.什么是预处理器指令 3.预处理器指令 4.宏指令 5.宏函数 6.宏函数的优缺点 7.条件编译指令 1.什么是预处理器 • 预处理器是一个程序,用来处理源程序中的预处理指令. ...
- 前端CSS预处理器Sass
前面的话 "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...
- css预处理器sass使用教程(多图预警)
css预处理器赋予了css动态语言的特性,如变量.函数.运算.继承.嵌套等,有助于更好地组织管理样式文件,以及更高效地开发项目.css预处理器可以更方便的维护和管理css代码,让整个网页变得更加灵活可 ...
- 关于前端CSS预处理器Sass的小知识!
前面的话 "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...
- CSS预处理器Sass、LESS 和 Stylus
CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...
- Koala – 开源的前端预处理器语言图形编译工具
koala 是一个前端预处理器语言图形编译工具,支持 Less.Sass.Compass.CoffeeScript,帮助 Web 开发者更高效地使用它们进行开发.跨平台运行,完美兼容 Windows. ...
- 为您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...
- C#预处理器指令
在C#中有许多名为“预处理指令”的命令,这些命令从来不会转化为可执行代码中的命令,但会影响编译过程的各个方面.例如,使用预处理器指令可以禁止编译器编译代码的某一部分.如果计划发布两个版本的代码,即基本 ...
- css的一种预处理器 sass
之前觉得关于css什么的没什么,后来让别人给问住了...然后就悲催了... sass是一种css的预处理器,是一种函数式的css的编程: 主要还是看官网 http://www.w3cplus.com/ ...
- 160907、CSS 预处理器-Less
CSS 预处理器是什么?一般来说,它们基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题: 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器: ...
随机推荐
- Prism Sample 8 ViewModelLocator
这一例只是说明ViewModelLocator的使用,没有难度,跳过.
- 分享一个提高运维效率的 Python 脚本
哈喽大家好我是咸鱼,今天给大家分享一个能够提升运维效率的 python 脚本 咸鱼平常在工作当中通常会接触到下面类似的场景: 容灾切换的时候批量对机器上的配置文件内容进行修改替换 对机器批量替换某个文 ...
- 虚拟机中Docker下部署gitlab
一.安装Gitlab 1.拉取镜像并启动 由于服务器的80端口可能被占用,所以这里我们改成了其他端口来启动 docker run -d -p 2443:443 -p 5678:80 -p 2222:2 ...
- selenium IDE插件的配置使用
开头 Selenium提供了一个可以自动录制脚本的插件 叫selenium IDE 让我们一起看看如何安装使用 安装 因为google扩展商城大多数人用不了,所以我们选用的是edag来下载seleni ...
- 2022-08-21:以下go语言代码输出什么?A:0;B:panic;C:不知道。 package main var n = -99 func main() { m := make(map[
2022-08-21:以下go语言代码输出什么?A:0:B:panic:C:不知道. package main var n = -99 func main() { m := make(map[stri ...
- docker安装es,单机集群模式.失败。
操作系统:mac系统. docker run -d --name es1 -p 9201:9200 -p 9301:9300 elasticsearch:7.14.0 docker run -d -- ...
- Django4全栈进阶之路22 项目实战(三种方式开发部门管理):方式三:FBV+ModelForm+get_object_or_404
1.视图 @login_required def department_list_view(request): departments = Department.objects.all() retur ...
- ERRORS: app1.Book.photo: (fields.E210) Cannot use ImageField because Pillow is not installed.
报错: (env) E:\pyAPP\mybook>python manage.py makemigrations SystemCheckError: System check identifi ...
- from . import XXX
[Python]from . import XXX 一. 官方文档 sound/ __init__.py formats/ __init__.py wavread.py wavwrite.py ai ...
- 【Java】水果超市管理系统
前言 说是个系统,看着像实训的产物,但实际上这是Java课程最后一个关于jdbc的大实验,yes,挺大的. 过程 看着视频里的一堆一堆的文件,逻辑混乱的讲解,我决定 我自己写这个系统 说干就干: 分析 ...