与Sass对比
Less 和 Sass 都是流行的 CSS 预处理器,它们各自有不同的优点。
相对于 Sass,Less 有以下几个优点:
- 更简单的语法:Less 的语法相对简单和直观,这使得学习曲线较平缓。对于新手开发者,Less 可能更容易上手。
- 动态变量:Less 允许在定义变量时使用动态计算,这意味着你可以进行基本的数学运算来生成变量值,而 Sass 在这方面有一些限制。
- 函数库:Less 提供了一些实用的函数,如颜色操作函数,这些函数在使用时比较简单直接,通常不需要额外的插件。
- 简单的继承机制:Less 提供了一个简化的继承机制,允许你通过
extend
来复用样式,相对比较直接。 - 内置的 Mixins:Less 的 Mixins 使用较为简单,不需要使用
@include
或@extend
等复杂语法。直接使用.
前缀的 Mixins 可以让代码更简洁。
当然,选择 Less 或 Sass 最终还是取决于你的具体需求和个人喜好。
Sass 也有它独特的优势,比如更多的功能、更强大的模块化系统和更广泛的社区支持。
对于我来说
两者都满足开发需求,Less使用起来更便捷,我选择Less。
另外iView和Ant Design Vue也都是使用的Less。
Element Plus使用的是Sass。
uni-app使用的是Sass。
测试的时候可以使用VSCode安装一个Easy LESS插件
只要我们的Less文件保存就会在同一目录生成对应的css文件,不用的时候禁用就行。
导入
导入
1 | @import "blue-theme.less"; |
变量
基本
1 | @nav-color: #F90; |
编译后
1 | nav { |
字符串中变量
示例1
1 | // Variables |
示例2
1 | // Variables |
嵌套
1 | #content { |
编译后
1 | #content article h1 { |
选择器
父选择器的标识符&
1 | article a { |
编译后
1 | article a { |
混合器
无参mixin
示例1
1 | .base { |
编译后
1 | .base { |
无参 mixin 的样式括号可以省略。
1 | .base { |
如果混合器不输出到CSS中
1 | .base() { |
混合器传参
基本
1 | .border-radius(@radius) { |
默认值
1 | .border-radius(@radius: 5px) { |
当然也可以省去括号
1 | .border-radius(@radius: 5px) { |
多态
1 | .mixin(@color) { |
结果
1 | .some .selector div { |
多个满足条件会取后者。
继承
使用&:extend(选择器)
进行样式继承。
相比于混合器,继承生成的CSS会更小。
基本示例
1 | .z_base { |
生成的样式
1 | .z_base, |
继承范围
只继承指定样式
less
1 | .a { |
生成
1 | .a, |
继承指定及其子样式
less
1 | .a { |
生成
1 | .a, |
内置函数
https://less.bootcss.com/functions/#less-%E5%87%BD%E6%95%B0
颜色加深
1 | // Variables |
生成的样式
1 | a { |
颜色变浅
1 | // Variables |
生成的样式
1 | a { |
运算符
基本示例
1 | a { |
生成后的
1 | a { |
主要运算符
LESS 支持多种运算符,用于在样式表中进行计算和动态生成值。
以下是 LESS 中支持的主要运算符:
加法(+
):
1 | @width: 100px; |
减法(-
):
1 | @width: 100px; |
乘法(*
):
1 | @width: 100px; |
除法(/
):
1 | @width: 200px; |
取余(%
):
1 | @width: 100px; |
比较运算符:
- 等于(
=
):@a = @b
- 不等于(
!=
):@a != @b
- 大于(
>
):@a > @b
- 小于(
<
):@a < @b
- 大于等于(
>=
):@a >= @b
- 小于等于(
<=
):@a <= @b
这些比较运算符可以在条件语句中使用,例如:1
2
3
4@color: red;
.box {
color: if(@color = red, blue, green);
}
逻辑运算符:
- 与(
and
):@a and @b
- 或(
or
):@a or @b
- 非(
not
):not @a
示例:1
2
3
4
5@isActive: true;
@isVisible: false;
.box {
display: if(@isActive and not @isVisible, block, none);
}
字符串连接:
1 | @prefix: "prefix-"; |
这些运算符可以帮助你在 LESS 中实现更复杂的样式计算和动态生成。