CSS 层叠样式表是一门标记语言,并不是编程语言,因此不可以自定义变量,不可以引用等,换句话说就是不具备任何语法支持,它主要缺陷如下:
- 语法不够强大,比如无法嵌套书写,导致模块化开发中需要书写很多重复的选择器;
- 没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护;
这就导致了我们在工作中无端添加了许多工作量。为了解决这个问题,前端开发人员会使用一种称之为【CSS预处理器】的工具,提供 CSS 缺失的样式层复用机制,减少冗余代码,提高样式代码的可维护性。大大提高了前端在样式上的开发效率。
什么是 CSS 预处理器
CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行 CSS 的编码工作。转化成通俗易懂的话来说就是“用一种专门的编程语言,进行 Web 页面样式设计,再通过编译器转化为正常的 CSS 文件,以供项目使用”。
常见的预处理器
- Sass:最早(2007年)的 CSS 预处理器语言,基于 Ruby,通过服务器端处理,功能强大。解析效率高。文件后缀 .sass,Sass3.0 新版语法规则可以使用 .scss 后缀。官网:Sass教程 Sass中文文档 | Sass中文网
Sass 和 Scss 其实是同一种东西,我们平时都称之为 Sass,两者之间不同之处有以下两点:
1、文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 Scss 是以“.scss”后缀作为扩展名
2、语法书写方式不同,Sass 是以严格的缩进式语法规则来写,不带大括号({})和分号(;),而 Scss 的语法书写和 CSS 语法书写方式无差别。
/* Sass 定义变量(新旧版相同) */
$font-color: #333;
/* style.sass 老语法 */
p
color: $font-color
/* style.scss sass3.0新版语法规则,sass新版使用.scss后缀 */
p {
color: $font-color;
}
- Less:2009年开源的一个项目,受 Sass 影响较大, 但又使用 CSS 的语法、基于 NodeJS,通过客户端处理,使用简单。功能比 Sass 简单,解析效率也低于 Sass 。文件后缀为 .less,官网:Less 快速入门 | Less.js 中文文档 - Less 中文网
- Stylus:2010年产生,来自于 Node.js 社区,主要用来给 Node 项目进行 CSS 预处理支持。提供一个高效、动态和使用表达方式来生成 CSS,以供浏览器使用。同时支持缩进和 CSS 常规样式书写规则。文件后缀是 .styl,官网:Expressive, dynamic, robust CSS — expressive, robust, feature-rich CSS preprocessor