用到的名词:

  • pre-process 预处理器
  • programmable 可编程的
  • semi-colons 分号
  • brace 花括号
  • function 函数
  • mixins 混合式
  • CSS-like synax 类CSS语法

什么是Sass?

根据Sass文档 http://sass-lang.com/documentation/ :

Sass is an extension of CSS that adds power and elegance to the basic language. It allows you to use variables, nested rules, mixins, inline imports, and more, all with a fully CSS-compatible syntax. Sass helps keep large stylesheets well organized, and get small stylesheets up and running quickly. Sass是一个CSS的扩展,给CSS这门基本语言添加了力量与优雅。他允许你使用变量,嵌入规则,混入,内联导入等等, 所有这些特性都是完全兼容CSS语法的。Sass帮助良好的组织大型的样式表,对于小型表单使它结构简单,运行加速。

简单来说,Sass使得SCSS可编程。你也许会问为什么我们这章讲的是SCSS,而这里却在讲Sass。 是这样的Sass和SCSS一样是一个CSS预处理器,CSS预处理器可以用他自己的方法来编写pre-CSS语法。

Sass是作为另一个名为HAML的预处理器的一部分由一群Ruby开发者开发出来的。 因此,他从Ruby那里继承了大量的语法样式,例如躲进,没有花括号,没有分号等等。
以下是一个Sass文件的范例:

// app.sass
brand-primary= blue
.container
    color= !brand-primary
    margin= 0px auto
    padding= 20px

=border-radius(!radius)
    -webkit-border-radius= !radius
    -moz-border-radius= !radius
    border-radius= !radius
*
    +border-radius(0px)

当通过一个Sass编译器运行以上Sass代码的时候,他返回了一个老式的良好的CSS。生成的CSS大概是这样的:

.container {
    color: blue;
    margin: 0px auto;
    padding: 20px;
}
* {
    -webkit-border-radius: 0px;
    -moz-border-radius: 0px;
    border-radius: 0px;
}

但是你有没有注意到在Sass代码中有一个brand-primary作为一个变量,在container中替换了他的值的, 或者border-radius作为一个函数(也可以叫如混合式)当使用参数调用的时候生成CSS规则?这些在CSS都不见了。
哪些使用bracket-based编程语言的人们这么些代码有点费劲。于是,SCSS就出现了。
Sass是Syntactically Aswsome Style Sheet(语法牛逼的样式表)的简写, SCSS是Sassy CSS(时髦的CSS)的简写。 SCSS和Sass非常像,除了类CSS语法。如果使用SCSS写入上Sass代码的话,是这样子的:

// app.scss
$brand-primary: blue;
.container{
    color: !brand-primary;
    margin: 0px auto;
    padding: 20px;
}
@mixin border-radius($radius) {
    -webkit-border-radius: $radius;
    -moz-border-radius: $radius;
    border-radius: $radius;
}
* {
    @include border-radius(5px);
}

这个看起来离CSS靠近了些,对吧?这个令人印象深刻。Ionic使用SCSS给他的组件样式化。

关于更多的SCSS vs. Sass的信息,可以参考这个帖子: http://thesassway.com/editorial/sass-vs-scss-which-syntax-is-better

现在,我们对SCSS和Sass有了一个初步的了解,我们将在Ionic app中对组件制定主题的时候对他们进行评估。

results matching ""

    No results matching ""