无论你是否相信,字符串在 CSS 和 SCSS 中都占有重要地位。大多数的 CSS 值不是数值就是字符串,所以遵循固定的编程规范处理 Sass 中的字符串是非常重要的一项工作。
## 编码
为了避免潜在的字符编码问题,强力建议在[入口文件](http://sass-guidelin.es/zh/?utm_source=tuicool#入口文件)中通过 `@charset` 指令使用[UTF-8](http://en.wikipedia.org/wiki/UTF-8) 编码格式。请确保该指令是文件的第一条语句,并排除其他字符编码声明。
~~~
@charset 'utf-8';
~~~
## 引用
CSS 中不要求字符串必须用引号包裹,甚至是字符串中包含空格的。就拿`font-family`属性来说:无论你是否使用引号包裹,CSS 解析器都可以正确解析。
因此,Sass **也不**强制要求字符串必须被引号包裹。更棒的是(你也会如此认为),被引号包裹和没被包裹的一对字符串完全等同(例如,`'abc'` 严格等同于 `abc`)。
话虽如此,不强制要求字符串被引号包裹的毕竟是少数,所以,在 Sass 中**字符串应该始终被单引号(`'`)所包裹**(在 **querty** 键盘中单引号比双引号更容易输入)。即使不考虑与其他语言的一致性,单是考虑 CSS 的近亲 JavaScript,也有数条理由这么做:
* 如果颜色名不被引号包裹,将会被解析为颜色值,显然这会导致严重问题;
* 大多数的语法高亮机制将会因未被引号包裹的字符串而罢工;
* 提高可读性;
* 没有正当理由不去用引号包裹字符串。
~~~
// Yep
$direction: 'left';
// Nope
$direction: left;
~~~
## 作为 CSS 的值
CSS 中类似 `initial` 或 `sans-serif` 的专用名词无须引用起来。事实上,`font-family: 'sans-serif'` 该声明是错误的,因为 CSS 希望获得的是一个标识符,而不是一个字符串。因此,我们无须引用这些值。
~~~
// Yep
$font-type: sans-serif;
// Nope
$font-type: 'sans-serif';
// Okay I guess
$font-type: unquote('sans-serif');
~~~
就像上例这样,我们就可以区别用于 CSS 值的字符串(CSS 标识符)和 Sass 的字符串类型了(比如 map 的值)。
我们没有引用前者,但却使用单引号包裹了它。
## 包含引号的字符串
如果字符串内包含了一个或多个单引号,一种解决方案就是使用双引号包裹整个字符串,从而避免使用过多的转义字符。
~~~
// Okay
@warn 'You can\'t do that.';
// Okay
@warn "You can't do that.";
~~~
## URLS
URL 最好也用引号包裹起来,原因和上面所描述一样:
~~~
// Yep
.foo {
background-image: url('/images/kittens.jpg');
}
// Nope
.foo {
background-image: url(/images/kittens.jpg);
}
~~~
## 扩展阅读
* [All You Ever Need to Know About Sass Interpolation](http://webdesign.tutsplus.com/tutorials/all-you-ever-need-to-know-about-sass-interpolation--cms-21375)
* [SassyStrings](https://github.com/HugoGiraudel/SassyStrings)
- 关于作者
- 贡献
- 关于Sass
- Ruby Sass Or LibSass
- Sass Or SCSS
- 其他预编译器
- 简介
- 为什么需要一个样式指南
- 免责声明
- 核心原则
- 语法格式
- 字符串
- 数字
- 颜色
- 列表
- Maps
- CSS规则集
- 声明顺序
- 选择器嵌套
- 命名约定
- 常量
- 命名空间
- 注释
- 标示注释
- 文档
- 结构
- 组件
- 7-1模式
- Shame文件
- 响应式设计和断点
- 命名断点
- 断点管理器
- 媒体查询用法
- 变量
- 作用域
- !default标识符
- !global标识符
- 多变量或maps
- 扩展
- 混合宏
- 基础
- 参数列表
- 混合宏和浏览器前缀
- 条件语句
- 循环
- Each
- For
- While
- 警告和错误
- 警告
- 错误
- 工具
- Compass
- 栅格系统
- SCSS-Lint
- 总结概要