sass:list
- Dart Sass
- 自 1.23.0 版起
- LibSass
- ✗
- Ruby Sass
- ✗
目前只有 Dart Sass 支持使用 @use 加载内置模块。其他实现的用户必须使用其全局名称来调用函数。
💡 趣闻
在 Sass 中,每个映射都算作一个列表,每个键值对都包含一个包含两个元素的列表。例如,(1: 2, 3: 4) 算作 (1 2, 3 4)。因此,所有这些函数也适用于映射!
单个值也计为列表。所有这些函数都将 1px 视为包含值 1px 的列表。
list.append($list, $val, $separator: auto)
append($list, $val, $separator: auto) //=> list
返回 $list 的副本,并在其末尾添加 $val。
如果 $separator 为 comma、space 或 slash,则返回的列表分别为逗号分隔、空格分隔或斜杠分隔。如果它是 auto(默认值),则返回的列表将使用与 $list 相同的分隔符(如果 $list 没有分隔符,则使用 space)。不允许使用其他值。
请注意,与 list.join() 不同,如果 $val 是一个列表,它将在返回的列表中嵌套,而不是将其所有元素添加到返回的列表中。
SCSS 语法
@use 'sass:list';
@debug list.append(10px 20px, 30px); // 10px 20px 30px
@debug list.append((blue, red), green); // blue, red, green
@debug list.append(10px 20px, 30px 40px); // 10px 20px (30px 40px)
@debug list.append(10px, 20px, $separator: comma); // 10px, 20px
@debug list.append((blue, red), green, $separator: space); // blue red green
Sass 语法
@use 'sass:list'
@debug list.append(10px 20px, 30px) // 10px 20px 30px
@debug list.append((blue, red), green) // blue, red, green
@debug list.append(10px 20px, 30px 40px) // 10px 20px (30px 40px)
@debug list.append(10px, 20px, $separator: comma) // 10px, 20px
@debug list.append((blue, red), green, $separator: space) // blue red green
list.index($list, $value)
index($list, $value) //=> number | null
返回 $list 中 $value 的索引。
如果 $value 不出现在 $list 中,则返回 null。如果 $value 在 $list 中出现多次,则返回其第一次出现的索引。
SCSS 语法
@use 'sass:list';
@debug list.index(1px solid red, 1px); // 1
@debug list.index(1px solid red, solid); // 2
@debug list.index(1px solid red, dashed); // null
Sass 语法
@use 'sass:list'
@debug list.index(1px solid red, 1px) // 1
@debug list.index(1px solid red, solid) // 2
@debug list.index(1px solid red, dashed) // null
list.is-bracketed($list)
is-bracketed($list) //=> boolean
返回 $list 是否有方括号。
list.join($list1, $list2, $separator: auto, $bracketed: auto)
join($list1, $list2, $separator: auto, $bracketed: auto) //=> list
返回一个新列表,其中包含 $list1 的元素,后跟 $list2 的元素。
⚠️ 注意!
因为单个值计为单元素列表,所以可以使用 list.join() 将值添加到列表的末尾。但是,不建议这样做,因为如果该值是一个列表,它将被连接,这可能不是您期望的结果。
使用 list.append() 将单个值添加到列表中。仅使用 list.join() 将两个列表组合成一个。
如果 $separator 为 comma、space 或 slash,则返回的列表分别为逗号分隔、空格分隔或斜杠分隔。如果它是 auto(默认值),则返回的列表将使用 $list1 的分隔符(如果有),否则使用 $list2 的分隔符(如果有),否则使用 space。不允许使用其他值。
如果 $bracketed 为 auto(默认值),则如果 $list1 有方括号,则返回的列表也将有方括号。否则,如果 $bracketed 为真值,则返回的列表将有方括号,如果 $bracketed 为假值,则没有方括号。
SCSS 语法
@use 'sass:list';
@debug list.join(10px 20px, 30px 40px); // 10px 20px 30px 40px
@debug list.join((blue, red), (#abc, #def)); // blue, red, #abc, #def
@debug list.join(10px, 20px); // 10px 20px
@debug list.join(10px, 20px, $separator: comma); // 10px, 20px
@debug list.join((blue, red), (#abc, #def), $separator: space); // blue red #abc #def
@debug list.join([10px], 20px); // [10px 20px]
@debug list.join(10px, 20px, $bracketed: true); // [10px 20px]
Sass 语法
@use 'sass:list'
@debug list.join(10px 20px, 30px 40px) // 10px 20px 30px 40px
@debug list.join((blue, red), (#abc, #def)) // blue, red, #abc, #def
@debug list.join(10px, 20px) // 10px 20px
@debug list.join(10px, 20px, comma) // 10px, 20px
@debug list.join((blue, red), (#abc, #def), space) // blue red #abc #def
@debug list.join([10px], 20px) // [10px 20px]
@debug list.join(10px, 20px, $bracketed: true) // [10px 20px]
list.length($list)
length($list) //=> number
返回 $list 的长度。
这也可以返回映射中的对数。
SCSS 语法
@use 'sass:list';
@debug list.length(10px); // 1
@debug list.length(10px 20px 30px); // 3
@debug list.length((width: 10px, height: 20px)); // 2
Sass 语法
@use 'sass:list'
@debug list.length(10px) // 1
@debug list.length(10px 20px 30px) // 3
@debug list.length((width: 10px, height: 20px)) // 2
list.separator($list)
list-separator($list) //=> unquoted string
返回 $list 使用的分隔符的名称,可以是 space、comma 或 slash。
如果 $list 没有分隔符,则返回 space。
SCSS 语法
@use 'sass:list';
@debug list.separator(1px 2px 3px); // space
@debug list.separator((1px, 2px, 3px)); // comma
@debug list.separator('Helvetica'); // space
@debug list.separator(()); // space
Sass 语法
@use 'sass:list'
@debug list.separator(1px 2px 3px) // space
@debug list.separator((1px, 2px, 3px)) // comma
@debug list.separator('Helvetica') // space
@debug list.separator(()) // space
list.nth($list, $n)
nth($list, $n)
返回 $list 中索引 $n 处的元素。
如果 $n 为负数,则从 $list 的末尾开始计数。如果索引 $n 处没有元素,则抛出错误。
list.set-nth($list, $n, $value)
set-nth($list, $n, $value) //=> list
返回 $list 的副本,其中索引 $n 处的元素替换为 $value。
如果 $n 为负数,则从 $list 的末尾开始计数。如果索引 $n 处不存在元素,则抛出错误。
SCSS 语法
@use 'sass:list';
@debug list.set-nth(10px 20px 30px, 1, 2em); // 2em 20px 30px
@debug list.set-nth(10px 20px 30px, -1, 8em); // 10px, 20px, 8em
@debug list.set-nth((Helvetica, Arial, sans-serif), 3, Roboto); // Helvetica, Arial, Roboto
Sass 语法
@use 'sass:list'
@debug list.set-nth(10px 20px 30px, 1, 2em); // 2em 20px 30px
@debug list.set-nth(10px 20px 30px, -1, 8em); // 10px, 20px, 8em
@debug list.set-nth((Helvetica, Arial, sans-serif), 3, Roboto); // Helvetica, Arial, Roboto
list.slash($elements...) //=> list
返回一个斜杠分隔的列表,其中包含 $elements。
⚠️ 注意!
此函数是创建斜杠分隔列表的临时解决方案。最终,它们将使用斜杠按字面意思编写,如 1px / 2px / solid,但目前斜杠用于除法,因此 Sass 无法在旧语法删除之前使用它们来表示新语法。
list.zip($lists...)
zip($lists...) //=> list
将 $lists 中的每个列表组合成一个包含子列表的单个列表。
返回列表中的每个元素都包含 $lists 中该位置的所有元素。返回列表的长度与 $lists 中最短列表的长度相同。
返回的列表始终为逗号分隔,子列表始终为空格分隔。
SCSS 语法
@use 'sass:list';
@debug list.zip(10px 50px 100px, short mid long); // 10px short, 50px mid, 100px long
@debug list.zip(10px 50px 100px, short mid); // 10px short, 50px mid
Sass 语法
@use 'sass:list'
@debug list.zip(10px 50px 100px, short mid long) // 10px short, 50px mid, 100px long
@debug list.zip(10px 50px 100px, short mid) // 10px short, 50px mid