开始有人觉得用某些编辑器写CSS的速度太慢,创造了各种IDE;后来嫌弃IDE写CSS还是不够快,于是发明了Zen-coding(即现在的Emmet);不过还是有人觉得CSS书写可以再快点、再方便点,于是就有了LESS和Sass等CSS预处理工具。

Emmet/Zen-coding加快了CSS的输入速度;而LESS和Sass除了加快CSS的书写速度,还增强了CSS这种语言,减少了代码量。

刚开始接触LESS和Sass,还不太熟悉。我会在博客上继续记录。

基本

LESS文件使用.less后缀名。

而Sass有两种:.sass.scss.sass的文件格式较松散但书写较快,可以不用花括号和分号; .scss文件与CSS较为接近,使用花括号和分号,如下:

// sass
.sass
    height:1px

// scss
.scss {
    height:1px;
}

(注:Sass和Scss区别仅限于花括号、分号和引号;我现在更喜欢使用Scss,所以下文出现的Sass有可能是指Scss)

变量(Variables)

LESS:

@var:value;

Sass:

$var:value;

嵌套(Nesting)

LESS和Sass的嵌套基本一致:

.header {
    .logo {
        display:block;
    }
    a {
        color:#f00;
    }
}

以上的代码通过LESS或Sass编译都会生成下面这样的CSS代码:

.header .logo {
    display:block;
}
.header a {
    color:#f00;
}

导入(Import)

// LESS
@import "file.less";

// Scss
@import "file.scss";

// Sass
@import file

LESS和Sass对import的处理也基本相同:同类文件就混合在一起然后编译;CSS文件则会在生成的CSS文件头部添加CSS的@import,如下:

// LESS
@import "import/reset.css";
// 生成的CSS代码
@import "import/reset.css";

// Sass
@import "import/reset.css";
// 生成的CSS代码
@import url(import/reset.css);

Extend/Inheritance

LESS和Sass现在都实现了Extend功能(有人反映LESS没有extend之类的功能,在这里介绍一下,LESS 1.4后就已经可以使用extend,请关注LESS的英文官方网站!某些介绍LESS的中文网站已年久失修,资料老旧)。

我更喜欢在HTML中实现继承多种CSS样式,而且一些CSS框架也是这样做的,例如使用<a class="pure-button pure-button-success">butotn</a>,而不是使用<a href="pure-button-success">button</a>

Compass

Compass,简单点来说就是Sass的工具箱。Compass之于Sass,就像Composer之于PHP,npm之于node.js。而LESS暂时没有发现类似的功能/工具,有点遗憾。

还有很多

更多的关于LESS和Sass的不同我会在后续的文章中继续记录。你也可以参考LESS和Sass的官方网站了解更多。