乐趣区

关于前端:预处理器-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 的相干应用,更多无关 前端CSSJavaScript 的内容能够参考我其它的博文,继续更新中~

退出移动版