声明 Map
sass 的 map 常常被称为数据地图,也有人称其为数组,因为他总是以 key:value 成对的出现,但其更像是一个 JSON 数据。
1 | $map: ( |
在 Sass 中常用下面的方式定义变量:
1 | $default-color: #fff; |
我们使用 map 可以更好的进行管理:
1 | $color: ( |
获取 Map
Sass 中获取变量,或者对 map 做更多有意义的操作,我们必须借助于 map 的函数功能。在 Sass 中 map 自身带了七个函数:
- map-get($map,$key):根据给定的 key 值,返回 map 中相关的值。
- map-merge($map1,$map2):将两个 map 合并成一个新的 map。
- map-remove($map,$key):从 map 中删除一个 key,返回一个新 map。
- map-keys(\$map):返回 map 中所有的 key。
- map-values(\$map):返回 map 中所有的 value。
- map-has-key($map,$key):根据给定的 key 值判断 map 是否有对应的 value 值,如果有返回 true,否则返回 false。
- keywords(\$args):返回一个函数的参数,这个参数可以动态的设置 key 和 value。
案例:
1 | $social-colors: ( |
获取 map 的取值( 如果 $key 不在 $map 中,不会编译出 CSS)
1 | .btn-facebook { |
判断取值是否存在
1 | @if map-has-key($social-colors, facebook) { |
获取 map 的所有 key 取值
map-keys($social-colors);
=============="dribble","facebook","github","google","twitter"
获取 map 的所有 value 取值
map-values($social-colors)
==============#ea4c89,#3b5998,#171515,#db4437,#55acee
合并 map
1 | $color: ( |
删除某个 key(若不存在则不变化)
$map:map-remove($social-colors,dribble);
keywords(args)函数可以说是一个动态创建 map 的函数。
可以通过混合宏或函数的参数变创建 map。参数也是成对出现,
其中 args 变成 key(会自动去掉\$符号),而 args 对应的值就是 value。
1 | @mixin map($args...) { |
在命令终端可以看到一个输入的 @debug 信息:
DEBUG: (dribble: #ea4c89, facebook: #3b5998, github: #171515, google: #db4437, twitter: #55acee)