变量可以是连续几个值,变量也可以被当做连续几个值中的一个值使用,变量在块外声明相当于全局变量。
中划线声明的变量可以用下划线引用,在规则块中可以嵌套规则块。一个规则块可以同时包含属性和规则块。& 代表当前规则块的选择器,也就是父选择器。父选择器还可以这样用 body.ie & { color: green }。
群组选择器的规则嵌套生成的css可能非常大,这会降低网站的速度。子组合选择器和同层组合选择器可以用在规则块内部的首位。属性也可以嵌套,比如 boder{style:;color:;}。
随着你的样式表变得越来越大,属性和选择器嵌套也很难保持结构清晰。处理这种大量样式的唯一方法就是把它们分拆到多个文件中。sass通过对css原有@import规则的改进直接支持了这一特性。
sass的@import规则在生成css文件时就把相关文件导入进来。这意味着所有相关的样式被归纳到了同一个css文件中,而无需发起额外的下载请求。另外,所有在被导入文件中定义的变量和混合器均可在导入文件中使用。
@import 并不需要指明被导入文件的后缀,所以 .sass 与 .scss 可以混用。sass 局部文件的文件名以下划线开头,这样的文件不会被编译,只用来 @import。@import 时可以省略下划线。
!default 用于变量,代表变量值的最低优先级。@import 可以在规则块中使用。
SCSS 是 Sass 3 引入新的语法,其语法完全兼容 CSS3,并且继承了 Sass 的功能。
Sass 中也可以导入原生的 CSS 文件。// 会产生静默注释,该注释不会在编译生成的 CSS 文件中出现。
保持sass条理性和可读性的最基本的三个方法:嵌套、导入和注释。
通过sass的混合器实现大段样式的重用。@mixin 定义混合器,@include 使用混合器。
判断一组属性是否应该组合成一个混合器,一条经验法则就是你能否为这个混合器想出一个好的名字。混合器名称展示性的描述,用来描述一条css规则应用之后会产生怎样的效果。
如果一个混合器只包含css规则(也就是只是嵌套了 CSS 选择器),不包含属性,那么这个混合器就可以在文档的顶部调用,写在所有的css规则之外。
可以使用 $变量 对混合器传递参数,混合器定义参数时也可以像 js 中的函数一样定义默认值。
规则块内部通过 @extend 选择器 实现对于其他选择器的继承。继承应该是建立在语义化的关系上。
一种高级用法是继承一个html元素的样式,比如 @extend a。
跟混合器相比,继承生成的css代码相对更少。因为继承仅仅是重复选择器,而不会重复属性,所以使用继承往往比混合器生成的css体积更小。如果你非常关心你站点的速度,请牢记这一点。
不要在css规则中使用后代选择器(比如.foo .bar)去继承css规则。你可以继承后代选择器,但不要用后代选择器去做继承。