[TOC]
****
# Sass 介绍
英文官网:http://sass-lang.com/
中文官网:https://www.sasscss.com/sass-guidelines/
因为你已经使用了 Node.js 来运行 Gulp 或 Grunt 和 PostCSS,所以使用 Sass 最简单的方法就是使用`LibSass`。**而且LibSass编译速度也要比Ruby Sass快很多**。在下面的教程中,将通过`gulp-sass`模块来部署LibSass。
## 在线书写
[SassMeister | The Sass Playground!](https://www.sassmeister.com/)
[an online Playground for Sass.js](http://sass.js.org/)
## RubyGems (gems)
RubyGems(简称 gems)是一个用于对 Ruby组件进行打包的 Ruby 打包系统。 它提供一个分发 Ruby 程序和库的标准格式,还提供一个管理程序包安装的工具。
其包含包信息,以及用于安装的文件。
Gem通常是依照`.gemspec`文件构建的,包含了有关Gem信息的YAML文件。
Ruby代码也可以直接建立Gem,这种情况下通常利用Rake来进行。
RubyGems 旨在方便地管理 gem 安装的工具,以及用于分发 gem 的服务器。
RubyGems 大约创建于2003年11月,从Ruby 1.9版起成为Ruby标准库的一部分。
如果你的 Ruby 低于 1.9 版本,也可以通过手动安装:
首先下载安装包:https://rubygems.org/pages/download 。
解压并进入目录,执行命令:
~~~
ruby setup.rb
~~~
## 更新 RubyGems 命令:
~~~
$ gem update --system # 需要管理员或root用户
~~~
## gem命令
`gem`命令用于构建、上传、下载以及安装Gem包。
## gem用法
RubyGems 在功能上与 Python 的 `pip`、Ubuntu 下的`apt-get`、Centos 的 `yum` 、`portage`和 `npm `非常相似。
# 教程
## `@import` 导入:
sass的导入(`@import`)规则和 CSS 的有所不同,编译时会将`@import`的 scss 文件合并进来只生成一个 CSS 文件。
但是如果你在 sass 文件中,导入时有以下情况:
1. 导入 css 文件如`@import 'reset.css'`
2. 文件名以 http 开头;
3. 文件名 是 url();
4. 带有任何媒体查询(screen,media queries)
那效果**跟普通CSS导入样式文件一样**,导入的css文件不会合并到编译后的文件中,而是以`@import`方式存在。
所有的sass导入文件都可以忽略后缀名`.scss`。一般来说基础的文件命名方法以`_`开头,如`_mixin.scss`(不会被编译出单独文件)这种文件在导入的时候可以不写下划线,可写成`@import "mixin"`。
## 注释
sass有两种注释方式,一种是标准的css注释方式`/* */`,另一种则是`//`双斜杆形式的单行注释,不过这种单行注释不会被转译出来。
## 变量
sass的变量必须是`$`开头,后面紧跟变量名,而变量值和变量名之间就需要使用冒号 `:` 分隔开(就像 CSS 属性设置一样),如果值后面加上`!default`则表示默认值。 sass 的默认变量一般是用来设置默认值,然后根据需求来覆盖的,覆盖的方式也很简单,只需要在默认变量之前重新声明下变量即可。
# 其他实现
## [LibSass](https://github.com/sass/libsass)
libsass 是一个用 C 语言实现的 Sass 解析器。特点是简单、速度快而且易于集成。
## [node-sass](https://github.com/sass/node-sass)
node-sass 是绑定了 libsass 的为 node.js 实现的 库,可以极快的自动将 `.scss` 文件编译为 `.css` 文件。
## [gulp-sass](https://github.com/dlmanning/gulp-sass)
轻巧的包裹了 `node-sass` 来实现相应的功能,如果使用时你遇到问题,那么问题可能来自:`libsass`或者`Sass`。
## [Susy](http://oddbird.net/susy/)
Susy 是一款用来为网站创建栅格布局的工具,它所带来的灵活和洒脱超乎想象。无论是 5 列,14 列,还是 48 列,一切都不是问题。不等宽列?So easy。
## [precss](https://github.com/jonathantneal/precss)
precss 囊括了许多插件来通过 PostCSS 支持类似 Sass 的特性,比如 CSS 变量,套嵌,mixins 等。
## [scss-lint](https://github.com/brigade/scss-lint)
可配置的工具,用于编写干净和一致的SCSS
# 工具
随着sass的发展也越来越成熟,以及autoprefixer这样的后处理的出现。好像也使得`compass`,`bourbon`这样的库地位越来越尴尬。而 `compass` 也早在2015年就停止了维护。
需不需要使用 `bourbon` 这样的工具库,每个人的需求也都不相同,大家可以自行选择。
## [Compass](https://github.com/Compass/compass)
`Sass`本身只是一个编译器,`Compass`在它的基础上,封装了一系列有用的模块和模板,补充`Sass`的功能。它们之间的关系,有点像`Javascript`和`jQuery`、`Ruby`和`Rails`、`python`和`Django`的关系。
对我来说,Compass一个最大的特性是,解决了浏览器前缀的问题。不用担心没输入浏览器前缀而引起的浏览器渲染问题。
(!!!已经停止维护)
[Compass用法指南](http://www.ruanyifeng.com/blog/2012/11/compass.html)
[Sass Frameworks: Compass or Bourbon?](https://www.sitepoint.com/compass-or-bourbon-sass-frameworks/)
[我为什么不再用Compass写CSS(缺点分析)](http://ourjs.com/detail/54ed5397232227083e000035)
## Bourbon
类似于`compass`,[Bourbon](http://bourbon.io/) 是一个轻量级的`SASS mixin`库。官方介绍说`bourbon`有以下三个优势:
* 没有第三方依赖,是纯净的sass
* 文档简洁明了,清晰易读
* 轻量级
[bourbon使用](https://www.jianshu.com/p/667ecffec802)
## Bitters
http://bitters.bourbon.io/
## Susy
http://susy.oddbird.net/
## [jeet](http://jeet.gs/)
## Rucksack
[Rucksack](https://github.com/seaneking/rucksack) 是一款有趣的CSS工具,让CSS的开发过程更加有趣了。Rucksack 是基于PostCSS构建的,模块化设计,没有冗余,运行起来飞快。将Rucksack融入到你的开发流程是很简单的,Rucksack对绝大多数的工具都有相应的插件。由于它是基于PostCSS来构建的,所以它同其他的CSS处理工具都能很好的兼容,甚至能够同Stylus直接协同。
[25 Essential Sass and Compass Tools](https://mashable.com/2013/06/11/sass-compass-tools/)
codepen 上还有css有趣插件
# 编写规范
[编写稳健、可维护和可扩展的 Sass](https://sass-guidelin.es/zh/)
[rscss 的中文翻译](https://github.com/suhaotian/rscss-zh-cn)
这篇文档适合有一定 sass 经验的人阅读 :)
# 参考
[sass在线玩耍](https://www.sassmeister.com/)
[使用Susy构建Web布局更简单](http://cdn1.w3cplus.com/node/1509)
- 必备基础
- 基础知识
- BFC
- 层叠上下文 Stacking Context
- 视觉格式化模型 Visual formatting model
- CSS3中使用HSL颜色指南
- z-index
- line-height
- vertical-align 属性
- 垂直居中
- overflow
- CSS3 Gradients
- CSS3 动画基础
- 难点知识
- 布局篇
- Flex布局
- =====
- Grid布局
- 多列布局
- 高级布局
- 预编译器篇
- PostCSS
- Sass
- stylus
- 模块篇
- 良好的使用
- CSS 模块化
- 技巧篇
- 未来的CSS
- 动画篇
- 工具篇
- CSS架构
- CSS 命名方法论
- BEM
- CSS解释器
- 常用框架
- 参考
- 唰唰声