Strings

字符串是字符序列(特别是码位)。Sass支持两种内部结构相同但呈现方式不同的字符串:带引号的字符串(如"Helvetica Neue")和不带引号的字符串(也称为标识符),如bold。 这些内容一起涵盖了CSS中出现的各种文本。

可以使用unquote()将带引号的字符串转换为不带引号的字符串,也可以使用quote()将不带引号的字符串转换为带引号的字符串。

转义符

所有的Sass字符串支持标准的CSS转义符:

  • 除了从A到F的字母或从0到9的数字之外的任何字符(甚至是换行!),都可以通过在字符串前面写入\作为字符串的一部分。

  • 任何字符都可以以\连着十六进制表示的Unicode字符列表的形式作为一部分包含在字符串中。 您可以选择在码点之后加一个空格,以指示Unicode数字的结束位置。

对于允许以字符串形式出现的字符,用Unicode转义表示与字符本身输出的结果是相同的。

带引号的字符串

带引号的字符串在单引号或双引号之间编写,如"Helvetica Neue"。它们可以包含插值,以及任何未转义字符,除了:

  • \可以转义为\\;
  • '"可以转义为\'\";
  • 换行,可以转义为\a(包括一个尾随空格)。

带引号的字符串编译为与原始Sass字符串内容相同的CSS字符串。确切的格式可能会根据实现或配置而变化 — 包含双引号的字符串可能被编译为"\""",而且非ASCII字符有可能被转义,也可能不被转义。但是在任何兼容标准的CSS实现中,包括所有浏览器,都应该对其进行相同的解析。

当一个带引号的字符串通过插值注入到另一个值时,它的引号将被删除!这使得编写包含选择器的字符串变得很容易,例如,可以在不添加引号的情况下将选择器注入样式规则。

不带引号的字符串

不带引号的字符串与CSS标识符一样,如下面的语法图所示。字符串中也有可能包含插值

Railroad diagram copyright © 2018 W3C® (MIT, ERCIM, Keio, Beihang)。 适用W3C责任商标许可文档许可规则。

并非所有标识符都被解析为不带引号的字符串:

因此,书写时建议使用带引号的字符串,除非您是专门编写使用无引号字符串的CSS属性的值。

转义符

兼容性:Dart Sass 1.11.0+ |LibSass ✗|Ruby Sass ✗

LibSass、Ruby Sass和Dart Sass的旧版本没有在标识符中规范转义。相反,不带引号的字符串的文本认为就是用户所写的文本本身。例如,\1F46D和👭并不认为是等价的。

当解析不带引号的字符串时,转义的文本被解析为字符串的一部分。例如,\a被解析为字符\a和空格。为了确保在CSS中具有相同含义的不带引号的字符串以相同的方式解析,这些转义需要被规范化。对于每个代码点,转义还是不转义,有以下几种情况:

  • 如果它是有效的标识符字符,则不用转义。例如,\1F46D返回👭。
  • 如果是换行符或制表符以外的其它可打印字符,则将其包含在\后面。 例如,\21返回\!
  • 否则,小写的Unicode转义将包含在尾随空格中。 例如,\7Fx返回\7f x

字符串索引

Sass有许多接受或返回数字的字符串函数,这些数字称为索引,它们引用字符串中的字符。索引1表示字符串的第一个字符。注意,这不同于许多编程语言,索引从0开始!Sass还可以方便地引用字符串的尾部字符。索引-1表示字符串中的最后一个字符,-2表示倒数第二个字符,依此类推。

上次更新: 2019-11-5 4:49:11 PM