【问题标题】:"Not a map for `map-get`" error after adding new elements to a mapping将新元素添加到映射后出现“不是 `map-get` 的映射”错误
【发布时间】:2015-02-09 09:44:23
【问题描述】:

如何将映射合并到 sass 中的现有映射中?

我目前在 _config 部分中使用 sass 映射来定义我的断点,例如:

$breakpoints: (
    small: 35rem,
    medium: 55rem,
    large: 75rem,
    xlarge: 90rem,
    element-breakpoint-1: 100rem,
    element-breakpoint-2: 110rem 
);

@mixin breakpoint($width) {
    @media screen and (min-width: map-get($breakpoints, $width)) {
        @content;
    }
}

.element {
    width: 100px;
    @include breakpoint(element-breakpoint-1) {
        width: 200px;
    }
    @include breakpoint(element-breakpoint-2) {
        width: 300px;
    }
}

理想情况下,我希望能够向现有映射添加新断点:

@function array-append($list, $value) {
    @return join($list, $value);
}

$breakpoints: array-append($breakpoints, (element-breakpoint-1: 100rem, element-breakpoint-1: 110rem));

问题是断点混合在$breakpoints 列表中看不到新值,SASS 抛出以下错误:

错误:$map: (("small" 35rem), ("medium" 55rem), ("large" 75rem), ("xlarge" 90rem), ("element-breakpoint-1" 100rem)) 不是`map-get' 的地图

【问题讨论】:

    标签: sass


    【解决方案1】:

    您要查找的函数是map-merge(),而不是join()join() 函数用于将列表连接在一起,并导致您的映射转换为列表列表。

    $fix-mqs: false;
    $breakpoints: (
        small: 35rem,
        medium: 55rem,
        large: 75rem,
        xlarge: 90rem
    );
    
    // map-merge here, not join
    $breakpoints: map-merge($breakpoints, (element-breakpoint-1: 100rem, element-breakpoint-2: 110rem));
    
    @mixin breakpoint($width) {
        @if $fix-mqs {
            @if $fix-mqs >= map-get($breakpoints, $width) {
                @content;
            }
        }
        @else {
            @media screen and (min-width: map-get($breakpoints, $width)) {
                @content;
            }
        }
    }
    
    @include breakpoint(element-breakpoint-2) {
      .foo {
        color: red;
      }
    }
    

    输出:

    @media screen and (min-width: 110rem) {
      .foo {
        color: red;
      }
    }
    

    【讨论】:

    • OooOOOOooo 这看起来很有希望!当我回到办公室时,威尔会试一试。
    猜你喜欢
    • 2014-03-14
    • 2022-11-29
    • 2013-06-08
    • 2018-10-01
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多