Maps

Sass中的Maps包含一对键和值,使得通过键查找值变得很容易。书写格式为(<expression>: <expression>, <expression>: <expression>):之前的表达式是键,后面的表达式是与该键关联的值。键必须是惟一的,但是值可以重复。与列表不同,maps必须用括号括起来。空map用()表示。

精明的读者可能会注意到,空map、()与空列表的写法相同。这是因为它既包括map也包括列表。事实上,所有的map都可以算作列表!每个map都被视为一个列表,其中包含每个键/值对的两个元素列表。例如,(1: 2, 3: 4)计算为(1 2, 3 4)

Maps允许使用任何Sass值作为键。==操作符用于确定两个键是否相同。

大多数时候,使用带引号的字符串而不是不带引号的字符串作为map键是一个好主意。这是因为一些值,例如颜色名称,可能看起来像不带引号的字符串,但实际上是其他类型。为了避免出现混淆的问题,请使用引号!

使用方法

由于maps不是有效的CSS值,所以它们自己不会做很多事情。这就是为什么Sass提供了一组函数来创建maps并访问它们包含的值。

查值

Maps都是关于关联键和值的,因此自然有一种方法可以获得与键关联的值:map-get($map, $key)!此函数返回与给定键关联的map中的值。如果map不包含键,则返回null

遍历

这实际上并不使用函数,但它仍然是使用map的最常见方式之一。@each规则为map中的每个键/值对计算样式块。键和值被分配给变量,以便在块中很容易地访问它们。

添加元素

向map添加新对或替换现有键的值也很有用。map-merge($map1, $map2)函数执行以下操作:它返回一个包含所有键/值对的新map。

map-merge()通常与内联map一起使用,以添加单个键/值对。

如果两个map具有相同的键,则返回第二个键所对应的值。

注意,由于Sass中的map是不可变的map-merge()不会修改原始列表。

值不可变

Sass中的map是不可变的,这意味着map值的内容永远不会更改。Sass的map函数都返回新的map,而不是修改原始的map。不变性有助于避免在样式表的不同部分共享相同的map时出现许多意外的bug。

不过,您仍然可以通过将新map分配给原变量来更新map。这通常在函数和mixin中用于跟踪map中的配置。

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