CSS3 预处理技术小结

256 阅读3分钟

CSS预处理技术小结

CSS3

见另一篇文章

预处理技术

CSS 预处理器用一种专门的编程语言,进行 web 页面样式设计,然后再编译成正常的 CSS 文件,以供项目使用。 CSS 预处理器为 CSS 增加一些编程的特性,无需考虑浏览器的兼容性问题

SASS ( SCSS=3.0+)

  • 支持缩进式的语法 *.sass, 及 {} 语法 *.scss
  • 变量:$变量:值;作用域混乱
  • mixins:定义 @mixin 名称($参数:值){使用$参数} 调用 @include 名([参数值])
  • 支持嵌套,以使用“&”符号来引用父选择器
  • 继承:子样式{@extend 父样式} 结果是
父样式,子样式{继承的样式};
子样式{单独的样式}
  • 运算符: 支持四则运算及单位换算

  • 支持颜色值函数

  • 注释: //; 多行 /* */

  • 语句:条件 @if 条件{}@else if 条件{}@then{};循环 @for $变量 from 开始 through 结束 {语句块}

  • 导入及导出:
    被导入文件的样式:

    /* file.{type} */
    a {
      background: #ff0000;
    }
    

    导入样式的文件:

    @import "某.css";
    @import "file.{type}";
    p {
      background: #00ff00;
    }
    

    转译的 CSS 代码:

    @import "某.css";
    a {
      background: #ff0000;
    }
    p {
      background: #00ff00;
    }
    

LESS

  • 支持 {} 语法
  • 变量:@变量:值;支持局部及全局变量
  • mixins:定义 .类名(@参数:值){使用@参数} 调用 .类名([参数值])
  • 支持嵌套,以使用“&”符号来引用父选择器
  • 继承:子样式{父样式} 缺点会复制父选择器所有样式到子样式
  • 运算符:支持四则运算
  • 支持颜色值函数
  • 注释:单行 //; 多行 /* */
  • 语句:条件 when(条件){}, 条件可以是 isnumber() 等等的函数;没有循环语句,使用递归
  • 导入及导出:同 SCSS

Stylus

主要用来给 Node 项目进行 CSS 预处理支持

  • 支持缩进式的语法及 {} 语法
  • 变量:变量=值;支持局部及全局变量
  • mixins:定义 名(参数=值){使用参数} 调用 名([参数值])
  • 支持嵌套,以使用“&”符号来引用父选择器
  • 继承:子样式{@extend 父样式} 结果同 SCSS
  • 运算符:支持四则运算、单位换算及其它
  • 支持颜色值函数
  • 注释:单行//; 多行/* *//*! */ Stylus 压缩的时候这段无视直接输出
  • 语句:条件 if 条件{}else if 条件{}then{};循环 for 键变量 [, 值变量] in 表达式 {语句块}
  • 导入及导出:同 SCSS

综上所述,我们对 Sass、LESS 和 Stylus 做一个简单的对比总结:

  • 三者都是开源项目;
  • Sass 诞生是最早也是最成熟的 CSS 预处理器,有 Ruby 社区和 Compass 支持;Stylus 早期服务器 Node JS 项目,在该社区得到一定支持者;LESS 出现于 2009 年,支持者远超于 Ruby 和 Node JS 社区;
  • Sass 和 LESS 语法较为严谨、严密,而 Stylus 语法相对散漫,其中 LESS 学习起来更快一些,因为他更像 CSS 的标准;
  • Sass 和 LESS 相互影响较大,其中 Sass 受 LESS 影响,已经进化到了全面兼容 CSS 的 SCSS;
  • Sass 和 LESS 都有第三方工具提供转译,特别是 Sass 和 Compass 是绝配;
  • Sass、LESS 和 Stylus 都具有变量、作用域、混合、嵌套、继承、运算符、颜色函数、导入和注释等基本特性,而且以“变量”、“混合”、“嵌套”、“继承”和“颜色函数”称为五大基本特性,各自特性实现功能基本相似,只是使用规则上有所不同;
  • Sass 和 Stylus 具有类似于语言处理的能力,比如说条件语句、循环语句等,而 LESS 需要通过 When 等关键词模拟这些功能,在这一方面略逊一层;
  • 三者缺点:简单来说 CSS 预处理器语言较 CSS 玩法变得更高级了,但同时降低了 自己对最终代码的控制力。更致命的是提高了门槛,首先是上手门槛,其次是维护门槛,再来是团队整体水平和规范的门槛。

参考文献

sass、less 和 stylus 的安装使用和入门实践 来源:caibaojian.com