• Sass Maps的函数-map-keys($map)


    map-keys($map) 函数将会返回 $map 中的所有 key。这些值赋予给一个变量,那他就是一个列表。如:

    map-keys($social-colors);

    其返回的值为:

    "dribble","facebook","github","google","twitter"

    换句话说:

    $list: map-keys($social-colors);

    相当于:

    $list:"dribble","facebook","github","google","twitter";

    这个时候,就可以配合 Sass 的 list 做很多事情。

    上面的示例,可以做通过 map-keys($map) 来做一个修改:

    @function colors($color){
        $names: map-keys($social-colors);
        @if not index($names,$color){
            @warn "Waring: `#{$color} is not a valid color name.`";
        }
        @return map-get($social-colors,$color);
    }

    上面代码中最不同之处,我们使 用map-key s将 $social-colors 这个 map 的所有 key 取出,并赋予给一个名 为 $names 的列表。然后通过 index($names,$color) 返回 $color 在 $names 位置,如果这个位置不存在,将返回提示信息,如果存在将返回正确的值。

    .btn-weibo{
        color: colors(weibo);
    }

    例如,weibo 不在 $social-color s中,那么不会编译出 CSS,而且在命令终端同样会有提示信息:

    WARNING: Waring: `weibo is not a valid color name.`
             on line 27 of test.scss

    同样,也可以通过 @each 或者 @for 遍历出所有值:

    @each:

    @each $name in map-keys($social-colors){
        .btn-#{$name}{
            color: colors($name);
        }
    }

    @for:

    @for $i from 1 through length(map-keys($social-colors)){
        .btn-#{nth(map-keys($social-colors),$i)} {
            color: colors(nth(map-keys($social-colors),$i));
        }
    }

    虽然使用的方法不一样,但最终得到的 CSS 是一样的:

    .btn-dribble {
      color: #ea4c89;
    }
    
    .btn-facebook {
      color: #3b5998;
    }
    
    .btn-github {
      color: #171515;
    }
    
    .btn-google {
      color: #db4437;
    }
    
    .btn-twitter {
      color: #55acee;
    }
  • 相关阅读:
    HDU4289 Control 最大流
    POJ3281 Dining 最大流
    HDU4738 Caocao's Bridges 无向图的桥
    HDU4865 Prince and Princess 强连通分量+二分图判定
    POJ 1904 King's Quest 强连通分量+二分图增广判定
    HDU 4635 Strongly connected 强连通分量
    HDU 4280Island Transport(Dinc非STL 模板)
    POJ 2752Seek the Name, Seek the Fame(next数组妙用 + 既是前缀也是后缀)
    Codeforces Round #346 (Div. 2)E
    POJ2318TOYS(叉积判断点与直线位置)
  • 原文地址:https://www.cnblogs.com/qjuly/p/9121441.html
Copyright © 2020-2023  润新知