Sass语法篇

Sass支持两种语法,你可以根据喜好随意选择其中一种。

SCSS

SCSS语法应用于后缀为 .scss 的文件,它是CSS的超集,那就意味着大多数情况下 合法的CSS写法也适用于SCSS

@mixin button-base() {
  @include typography(button);
  @include ripple-surface;
  @include ripple-radius-bounded;

  display: inline-flex;
  position: relative;
  height: $button-height;
  border: none;
  vertical-align: middle;

  &:hover { cursor: pointer; }

  &:disabled {
    color: $mdc-button-disabled-ink-color;
    cursor: default;
    pointer-events: none;
  }
}

缩进式语法(SASS)

这是Sass最原先的语法,应用于后缀为 .sass 的文件,缩进语法支持SCSS语法的一眼的功能,只是在写法上会用缩进的形式代替花括号和分号。

通常来讲,你如果想用花括号来表示结构的时候,你可以使用代码缩进来表示,每行结束的时候,即视为分号,这里只包括了基本的写法区别,其余的区别在后续的文档中会提到

@mixin button-base()
  @include typography(button)
  @include ripple-surface
  @include ripple-radius-bounded

  display: inline-flex
  position: relative
  height: $button-height
  border: none
  vertical-align: middle

  &:hover
    cursor: pointer

  &:disabled
    color: $mdc-button-disabled-ink-color
    cursor: default
    pointer-events: none

和CSS一样,大部分Sass样式表是由包含属性声明的样式规则组成。但是Sass样式表还包含其他的一些功能

声明

Sass样式表由一系列声明组成,一些声明会包含语法块,通常由 {} 表示,语法块中还会包含其他声明,例如属性声明。

在Scss中,声明由分号分隔开,在缩进语法(.sass)中,只需换行即可。

通用声明

这些声明可以在Sass样式表中任何地方使用:

CSS声明

这些声明生成CSS,它们可以在除 @function 的任何地方使用:

顶级声明

这些声明只能在样式表最上面或者CSS语法块最外层使用:

其余声明

表达式

表达式通常指属性右侧部分或者是变量声明,所有表达式最后都会生成一个值。任何有效的CSS属性值都可以是Sass表达式,但是Sass表达式包含更丰富强大的功能。它们可以将参数传递给 mixinsfunctions,用 @if rule 控制流程,并用算法进行操作。我们把Sass表达式称为 SassScript 语法。

文值

最简单的表达式就是静态的值:

  • Numbers,可以有单位,比如 12100px
  • Strings,可以有引号,比如 "Helvetica Neue"blod
  • Colors,可以用颜色代码或者颜色名表示,比如 #c6538cblue
  • booleantrue 或者 false
  • null
  • 值列表,由空格,逗号或者 [] 来隔开,比如:1.5em 1em 0 2em, Helvetica, Arial, sans-serif 或者 [col1-start]
  • Maps会把 keyvalue 联系起来,比如: ("background": red, "foreground": pink)

运算

Sass为数字运算定义了语法:

  • == 和 !=用来检查两个值是否相等
  • +, -, *, /, 和 %用来对数字进行常用的算数计算,加上单位会有特殊的意义
  • <, <=, >, 和 >=用来检查两个值哪个大,哪个小
  • and, or 和 not用来表示布尔行为,Sass认为除了 falsenull 其余的都为 true
  • +, - 和 /可用于连接字符串
  • ( and )可用于显式控制操作的优先顺序

其余表达式

  • 变量,比如 $var
  • 函数调用,比如 nth($list, 1) 或者 var(--main-bg-color) ,可以调用Sass核心库函数或用户定义的函数,也可以直接编译为CSS
  • 特定函数,比如 calc(1px + 100%)url(http://myapp.com/assets/logo.png) 具有自己独特的解析规则
  • 父级选择器&
  • !important,被解析为无引号的字符串

参考


Profile

不正经的人机交互工程师