こんにちは、みんな、
この記事にあるカラーパレット機能を実装しようとしています。
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
GruntSassバージョンを使用しています-0.16.1
何か案は?
どうもありがとう
確認済み! 新しい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に関連する問題に直面している可能性があります。
これはいくぶん真実だと思います。 マップキーは文字列ではなく色として扱われていると思いますが、なぜこれが問題になるのかはわかりません。
縮小されたテストケースがRubysassで正常に機能することは注目に値します。
問題は、マップキーのpurple
を文字列として扱い、関数呼び出しのpurple
をcolor
として扱うことです。 map-get
を呼び出すと、紫色に関連付けられた値を要求しますが、これは文字列purpleの下に格納されます。 これらの2つのことは同等ではありません-http ://sassmeister.com/gist/77ae29d46ebecd0823ed
数時間以内に発送する修正があります。
最も参考になるコメント
私の最初の考えは間違っていたようです。 問題は、マップキーが色の名前であるためです。 Libsassには、色名である文字列の解析に関していくつかの問題があります。つまり、 https://github.com/sass/libsass/issues/558
ケースの削減: http :