Some Sass writing standards

Posted by Keystion on 2015-02-05
1
2
3
4
5
6
7
8
9
// 由于 Node 原生支持模块的作用域,并不需要额外的 wrapper
// "as though the module was wrapped in a function"

var a = require('./a') // 加载模块(同步加载)
a.doSomething() // 等上一句执行完才会执行

exports.b = function(){ // 暴露 b 函数接口
// do something
}

Sass - CSS 预处理器

简介

CSS 预处理器:

定义一种新的语言,为CSS增加了一些编程的特性,将CSS作为目标生成文件,开发者可以使用这种语言进行编码工作

Sass背景

Sass是对CSS的语法的一种扩充,诞生于2007年,最早也是最成熟的一款CSS预处理器语言,它可以使用变量、常量、嵌套、混入、函数等功能,可以更有效有弹性的写出CSS

Sass已经有了两套语法规则:

  • 一个依旧是用缩进作为分隔符来区分代码块的;
  • 另一套规则和CSS一样采用了大括号作为分隔符。
    后一种语法规则又名Scss。(Scss更常用,以下说得Sass在没有特别指出得情况下,指的都是Scss)。

书写规范

  1. 声明文档的字符编码
  2. 导入引用 @mixinfunction 等等
  3. 文档的简要概述
  4. 嵌套层级不要太深,适当的时候使用 @at-root
  5. 不要忘记写;
1
2
3
4
5
6
7
8
@charset "UTF-8";
@import "mixin.scss"; //导入其他文件
@import "mixin"; //导入其他文件
/**
* @fileoverview <%= projectName %>.
* @author <%= author %> <<%= email %>>
* @version <+DATE+>
*/

局部文件

名字以下划线开头比如 _reset.scss. 下划线让Sass知道这个文件是一个分部文件,不会为它单独产生一个CSS文件。可以使用@import导入分部文件.

-----------_reset.scss-----------

1
2
3
4
5
6
7
8
9
10
11
12
13
html,body,ul,ol {
margin: 0;
padding: 0;
}
```
---------base.scss-----------
```scss
/* base.scss */
@import 'reset'; // 可忽略下划线
body {
font: 100% Helvetica, sans-serif;
background-color: #efefef;
}

---------编译后-----------

1
2
3
4
5
6
7
8
9
10
/* base.scss */
html, body, ul, ol {
margin: 0;
padding: 0;
}

body {
font: 100% Helvetica, sans-serif;
background-color: #efefef;
}

常见错误

1. 编译后css文件中出现 @at-root

  • @at-root 是Sass3.3版本的新特性
  • 解决方法:升级你的sass版本
    • gem update sass
    • sass -v
    • Ps:升级过程中可能需要当前生产环境下的某个文件夹的读写权限;
    • ERROR: While executing gem … (Gem::FilePermissionError) You don’t have write permissions into the /usr/local/bin directory.
    • 执行命令:sudo chmod -R 777 <-filepath->
    • 关于”chmod“的更多信息,请百度或google学习

2. 忘记设置编码

1
2
3
4
5
Error: Invalid US-ASCII character "`\xE4`"
on line 4 of app/assets/scss/_web/topdeals-web.scss
Use --trace for backtrace.
Warning: Exited with error code 65 Use --force to continue.
Syntax error: Invalid GBK character "`\xE5`"

原因:文档没有设置 编码格式
解决方法:文档第一行@charset "UTF-8"; "UTF-8"大写

3. 句末忘记写 “;" 也会报错

1
2
3
4
5
6
7
8
9
10
@charset "UTF-8"
/**
* @fileoverview Home Paga Stylesheet
* @author shang.yantao shang.yantao@topka.cn
* @copyRight topka.cn
* @versioon v1.0
*/
body{
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
}

第一行 @charset 句末忘记写 “;”。报错会出现在第8行(也就是错误本身的下一个css主体处,找错应该向上找;):
![](/images/posts2015/02-05/image2014-12-12 15-41-32.png)

gulp-ruby-sass 相关

1
2
gulp-ruby-sass: stderr: OptionParser::InvalidOption: invalid option: --sourcemap=none
Use --trace for backtrace.

升级sass> gem update sass

http://sass-lang.com/guide 官方文档

  • Preprocessing(预处理)
  • Variables(变量)
  • Nesting(嵌套)
  • Partials(局部文件)
  • Import(导入文件)
  • Mixins(混合变量)
  • Extend/Inheritance(扩展/继承)
  • Operators(运算符)