Libsass: 命名颜色不能用作地图键

创建于 2014-11-17  ·  8评论  ·  资料来源: sass/libsass

大家好,

我正在尝试在这里实现本文中看到的调色板功能。

http://erskinedesign.com/blog/friendlier-colour-names-sass-maps/

这是结果代码

// config
$_color-base-grey: rgb(229,231,234);
$palettes: (
    purple: (
        base:   rgb(42,40,80),
        light:  rgb(51,46,140),
        dark:   rgb(40,38,65)
    ),
    grey: (
        base:  $_color-base-grey,
        light: lighten($_color-base-grey, 10%),
        dark: darken($_color-base-grey, 10%)
    )
);

// Palette function,
<strong i="10">@function</strong> palette($palette, $tone: 'base') {
    <strong i="11">@return</strong> map-get(map-get($palettes, $palette), $tone);
}


// in module styles
a {
    color: palette(purple);
    &:hover {
        color: palette(purple, light);
    }
}

所有迹象似乎都指向此工作,但我收到此错误。

Warning: /Users/xxx/xxx//styles.scss:35: argument `$map` of `map-get($map, $key)` must be a map

我正在使用 Grunt Sass 版本 - 0.16.1

有任何想法吗?

非常感谢

Bug - Confirmed Dev - Test Written

最有用的评论

看来我最初的想法是错误的。 问题是因为地图键是颜色名称。 Libsass 在解析颜色名称的字符串时存在一些问题,即https://github.com/sass/libsass/issues/558

简化案例: http :

所有8条评论

确认的! 我从 libsass 得到以下(JSON)错误,新的API 在 node-sass (未发布)中实现:

{
        "status": 1,
        "path": "c:/temp/foo3.scss",
        "line": 18,
        "column": 13,
        "message": "argument `$map` of `map-get($map, $key)` must be a map\nBacktrace:\n\tc:/temp/foo3.scss:18, in function `map-get`\n\tc:/temp/foo3.scss:18, in function `palette`\n\tc:/temp/foo3.scss:24"
}

@mgreter ,分开; 在 JSON 的message中,文件名和行号不应重复。 :)

我对此进行了深入研究,似乎是因为map-get($palettes, $palette)返回 null。

有什么解决办法吗?

我已将此添加到 3.0.3 里程碑中,它应该会进入下一个版本。

看来我最初的想法是错误的。 问题是因为地图键是颜色名称。 Libsass 在解析颜色名称的字符串时存在一些问题,即https://github.com/sass/libsass/issues/558

简化案例: http :

作为提醒,看起来用户可能会遇到与 sass/sass#363 相关的问题,因为地图键不是字符串,而是颜色。

我相信这是有一定道理的。 我认为地图键被视为颜色而不是字符串,尽管我不确定为什么这是一个问题。

值得注意的是,简化的测试用例在 Ruby sass 上运行良好。

问题是,我们对待purple在地图键为一个字符串, purple函数调用的color 。 当我们调用map-get我们请求的是与紫色相关的值,但它存储在字符串紫色下。 这两件事是不等价的 - http://sassmeister.com/gist/77ae29d46ebecd0823ed

我有一个修复程序,我将在几个小时内发货。

此页面是否有帮助?
0 / 5 - 0 等级