弦乐
字符串是字符序列(特别是Unicode代码点)。Sass支持两种内部结构相同但呈现方式不同的字符串:带引号的字符串(如"Helvetica Neue"
)和未带引号的字符串(也称为标识符)(如)bold
。这些内容一起涵盖了CSS中出现的各种文本。
???? 有趣的事实:
您可以使用带引号的字符串转换为加引号的字符串string.unquote()
功能,并且可以使用不带引号的字符串转换为一个带引号的字符串string.quote()
函数。
逃脱永久链接逃脱
所有的Sass字符串都支持标准的CSS 转义码:
通过从A到F的字母或从0到9的数字(甚至换行!)之外的任何字符都可以包含在字符串
\
中。通过写
\
后跟以十六进制写的Unicode代码点号,可以将任何字符作为字符串的一部分包含在内。您可以选择在代码点编号之后包含一个空格,以指示Unicode数字的结束位置。
SCSS 语法
@debug "\""; // '"'
@debug \.widget; // \.widget
@debug "\a"; // "\a" (a string containing only a newline)
@debug "line1\a line2"; // "line1\a line2"
@debug "Nat + Liz \1F46D"; // "Nat + Liz ????"
Sass语法
@debug "\"" // '"'
@debug \.widget // \.widget
@debug "\a" // "\a" (a string containing only a newline)
@debug "line1\a line2" // "line1\a line2" (foo and bar are separated by a newline)
@debug "Nat + Liz \1F46D" // "Nat + Liz ????"
???? 有趣的事实:
对于允许出现在字符串中的字符,编写Unicode转义符会产生与编写字符本身完全相同的字符串。
引用永久链接引用
带引号的字符串写在单引号或双引号之间,如中所示"Helvetica Neue"
。它们可以包含插值,以及任何未转义的字符,除了:
\
可以作为逃脱\\
;'
或"
,用于定义该字符串的那个,可以以\'
或 形式转义\"
。- 换行符,可以换成
\a
(包括尾随空格)。
带引号的字符串保证可以编译为与原始Sass字符串内容相同的CSS字符串。确切的格式可能会根据实现或配置而有所不同-包含双引号的字符串可能会编译为"\""
或'"'
,并且非ASCII字符可能会也可能不会转义。但这应该在任何符合标准的CSS实施中(包括所有浏览器)进行解析 。
SCSS 语法
@debug "Helvetica Neue"; // "Helvetica Neue"
@debug "C:\\Program Files"; // "C:\\Program Files"
@debug "\"Don't Fear the Reaper\""; // "\"Don't Fear the Reaper\""
@debug "line1\a line2"; // "line1\a line2"
$roboto-variant: "Mono";
@debug "Roboto #{$roboto-variant}"; // "Roboto Mono"
Sass语法
@debug "Helvetica Neue" // "Helvetica Neue"
@debug "C:\\Program Files" // "C:\\Program Files"
@debug "\"Don't Fear the Reaper\"" // "\"Don't Fear the Reaper\""
@debug "line1\a line2" // "line1\a line2"
$roboto-variant: "Mono"
@debug "Roboto #{$roboto-variant}" // "Roboto Mono"
???? 有趣的事实:
当通过内插将带引号的字符串插入另一个值时,其引号将被删除!例如,这使得编写包含选择器的字符串变得容易,这些选择器可以插入样式规则而无需添加引号。
未引用的永久链接未引用
遵循以下语法图,将未加引号的字符串写为CSS 标识符。它们可能 在任何地方包括插值。
SCSS 语法
@debug bold; // bold
@debug -webkit-flex; // -webkit-flex
@debug --123; // --123
$prefix: ms;
@debug -#{$prefix}-flex; // -ms-flex
Sass语法
@debug bold // bold
@debug -webkit-flex // -webkit-flex
@debug --123 // --123
$prefix: ms
@debug -#{$prefix}-flex // -ms-flex
Head️抬头!
并非所有标识符都被解析为未加引号的字符串:
- CSS颜色名称被解析为颜色。
null
被解析为Sass的null
值。true
并且false
被解析为布尔值。not
,and
和or
被解析为布尔运算符。
因此,除非您专门编写使用无引号的字符串的CSS属性的值,否则通常最好编写引号的字符串。
逃脱永久链接逃脱
- Dart·Sass(Dart Sass)
- 从 1.11.0开始
- LibSass
- ✗
- rubySass
- ✗
LibSass,Ruby Sass和较旧版本的Dart Sass不会规范标识符中的转义符。而是,未加引号的字符串中的文本是用户编写的确切文本。例如,\1F46D
和????
不视为等效。
解析未引用的字符串时,转义的文字文本将作为字符串的一部分进行解析。例如,\a
被分析为字符\
,a
和空间。为了确保以相同的方式解析CSS中具有相同含义的未加引号的字符串,将这些转义进行了规范化。对于每个代码点,无论是转义还是不转义:
如果它是有效的标识符字符,则不加引号地包含在未引号的字符串中。例如,
\1F46D
返回未加引号的字符串????
。如果它是换行符或制表符以外的其他可打印字符,则将其包含在
\
。之后。例如,\21
返回未加引号的字符串\!
。否则,小写的Unicode转义将包含在尾随空格中。例如,
\7Fx
返回未加引号的字符串\7f x
。
SCSS 语法
@use "sass:string";
@debug \1F46D; // ????
@debug \21; // \!
@debug \7Fx; // \7f x
@debug string.length(\7Fx); // 5
Sass语法
@use "sass:string"
@debug \1F46D // ????
@debug \21 // \!
@debug \7Fx // \7f x
@debug string.length(\7Fx) // 5
字符串索引永久链接字符串索引
Sass有许多使用或返回数字的字符串函数,这些数字称为index,它们引用字符串中的字符。索引1指示字符串的第一个字符。请注意,这与许多从0开始的编程语言不同!Sass还使引用字符串的结尾变得容易。索引-1表示字符串中的最后一个字符,-2表示倒数第二个,依此类推。
SCSS 语法
@use "sass:string";
@debug string.index("Helvetica Neue", "Helvetica"); // 1
@debug string.index("Helvetica Neue", "Neue"); // 11
@debug string.slice("Roboto Mono", -4); // "Mono"
Sass语法
@use "sass:string"
@debug string.index("Helvetica Neue", "Helvetica") // 1
@debug string.index("Helvetica Neue", "Neue") // 11
@debug string.slice("Roboto Mono", -4) // "Mono"