什么是Sass和Less?
Sass和Less都是属于CSS的预处理器,那什么是预处理器呢?
CSS预处理器定义了一种新的语言。其基本思想是,用一种专门的编程语言,为CSS增加了一些编程的特性,将CSS作为目标生成文件,然后开发者就只要使用这种语言的CSS语言编码工作。
转化成通俗易懂的话来说就是"用一种专门的编程语言,进行Web页面样式设计,再通过编译器转换成为正常的CSS,以供项目使用"。
为什么要使用CSS预处理器?
作为前端开发人员,大家都知道,JS中可以自定义变量,而CSS仅仅是一个标记语言,因此不可以自定义变量,不可以引用等等。
CSS具有以下几个特点:
- 语法不够强大;比如无法嵌套书写,导致模块化开发中需要重复书写很多的选择器。
- 没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护。
这就导致了我们在工作中无端增加了很多工作量。而使用CSS预处理器,提供CSS缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性。很大程度上提高了我们的开发效率。
但是,CSS预处理器也不是万金油,CSS的好处在于简便、随时随地被使用和调试。预编译CSS步骤的加入,让我们的开发工作流中多了一个环节,调试也变得更麻烦了。更大的问题在于,预编译很容易造成后代选择器的滥用。
所以我们在实际项目衡量预编译方案时,还是得想想,比起带来的额外维护开销,CSS预处理器有没有解决更大的麻烦。
Sass和Less的比较
不同之处
Less环境较Sass简单
Sass的安装需要依赖Ruby环境,Less基于Javascript,是需要引入less.js来处理代码输出CSS到浏览器,也可以在开发环节使用Less,然后编译成CSS文件,直接放在项目中。
Less使用较Sass简单
Less并没有裁剪CSS原有的特性,而是在现有CSS语法的基础上,为CSS语言加上程序式语言的特性。只要你了解CSS基础就可以很容易上手。
从功能出发,Sass较Less略强大一些
Sass有变量和作用域;
Sass有函数的概念;
流程控制语句;
数据结构;
Less和Sass的处理机制不一样
Less式通过客户端处理的,Sass是通过服务端处理,相比较之下前者解析会比后者慢一些。
关于变量在Less中Sass中的唯一区别就是Less用@,Sass用$
相同之处
Less和Sass在语法上有很多共性,比如下面这些:
混入(mixin)
参数混入
嵌套规则
运算
颜色功能(可以编辑颜色)
命名空间
作用域
Javascript赋值
为什么选择使用Sass而不是Less?
1.Sass在市面上有一些成熟的框架,比如说Compass
2.论坛活跃度、关注度方面Sass明显优于Less
3.学习教程来说,Sass也优于Less
4.Sass也是成熟的CSS预处理器,而且有一个稳定、强大的团队在维护
5.bootstrap推出的4.X版本,使用得就是Sass