Halo semua,
Saya mencoba menerapkan fungsi palet warna yang terlihat di artikel ini di sini.
http://erskinedesign.com/blog/friendlier-colour-names-sass-maps/
Ini adalah kode yang dihasilkan
// 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);
}
}
Semua tanda tampaknya menunjukkan ini berfungsi tetapi saya mendapatkan kesalahan ini.
Warning: /Users/xxx/xxx//styles.scss:35: argument `$map` of `map-get($map, $key)` must be a map
Saya menggunakan versi Grunt Sass - 0.16.1
Ada ide?
Terimakasih banyak
Dikonfirmasi! Saya mendapatkan kesalahan (JSON) berikut dari libsass, dengan API baru
{
"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 , secara terpisah; di message
dari JSON, nama file dan nomor baris tidak boleh diulang. :)
Saya menggali ini dan tampaknya karena map-get($palettes, $palette)
mengembalikan nol.
Ada solusi belum?
Saya telah menambahkan ini ke tonggak 3.0.3 yang seharusnya membuatnya menjadi rilis berikutnya.
Tampaknya pikiran awal saya salah. Masalahnya adalah karena kunci peta adalah nama warna. Libsass memiliki beberapa masalah dalam hal penguraian string yang merupakan nama warna yaitu https://github.com/sass/libsass/issues/558
Kasus yang dikurangi: http://sassmeister.com/gist/d2be1def3619bd6c3a54
Sebagai peringatan, sepertinya pengguna mungkin mengalami masalah yang terkait dengan sass/sass#363 dalam warna itu karena kunci peta bukanlah string, tetapi warna.
Saya percaya ini agak benar. Saya pikir kunci peta diperlakukan sebagai warna daripada string, meskipun saya tidak yakin mengapa ini menjadi masalah.
Perlu dicatat bahwa kasus uji yang dikurangi berfungsi dengan baik di Ruby sass.
Masalahnya adalah kita memperlakukan purple
di kunci peta sebagai string dan purple
dalam panggilan fungsi sebagai color
. Saat kita memanggil map-get
kita meminta nilai yang terkait dengan warna ungu, tetapi disimpan di bawah string ungu. Ini dua hal yang tidak setara - http://sassmeister.com/Gist/77ae29d46ebecd0823ed
Saya punya perbaikan, saya akan mengirimkannya dalam beberapa jam.
Komentar yang paling membantu
Tampaknya pikiran awal saya salah. Masalahnya adalah karena kunci peta adalah nama warna. Libsass memiliki beberapa masalah dalam hal penguraian string yang merupakan nama warna yaitu https://github.com/sass/libsass/issues/558
Kasus yang dikurangi: http://sassmeister.com/gist/d2be1def3619bd6c3a54