تحية للجميع،
أحاول تنفيذ وظيفة لوحة الألوان الموضحة في هذه المقالة هنا.
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
أيه أفكار؟
تشكرات
مؤكد! لقد تلقيت الخطأ (JSON) التالي من libsass ، مع تطبيق API الجديد
{
"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 ، بشكل منفصل ؛ في message
من JSON ، لا يجب تكرار اسم الملف ورقم السطر. :)
لقد بحثت في هذا وبدا أن السبب هو إرجاع map-get($palettes, $palette)
فارغًا.
أي حل حتى الآن؟
لقد أضفت هذا إلى الإصدار 3.0.3 الذي يجب أن يدخله في الإصدار التالي.
يبدو أن أفكاري الأولية كانت خاطئة. تكمن المشكلة في أن مفتاح الخريطة هو اسم لوني. يواجه Libsass بعض المشكلات عندما يتعلق الأمر بتحليل السلاسل ذات الأسماء الملونة ، مثل https://github.com/sass/libsass/issues/558
حالة مخفضة: http://sassmeister.com/gist/d2be1def3619bd6c3a54
كتنبيه ، يبدو أن المستخدم قد يتعامل مع المشكلة المتعلقة بـ sass / sass # 363 بهذه الألوان لأن مفاتيح الخريطة ليست سلاسل ، بل ألوانًا.
أعتقد أن هذا صحيح إلى حد ما. أعتقد أن مفتاح الخريطة يتم التعامل معه على أنه لون وليس سلسلة ، على الرغم من أنني لست متأكدًا من سبب هذه المشكلة.
تجدر الإشارة إلى أن حالة الاختبار المخفضة تعمل بشكل جيد على Ruby sass.
المشكلة هي أننا نتعامل مع purple
في مفتاح الخريطة كسلسلة و purple
في استدعاء الوظيفة على أنه color
. عندما نطلق على map-get
فإننا نطلب القيمة المرتبطة باللون الأرجواني ، ولكن يتم تخزينها تحت السلسلة Purple. هذان الشيئان غير متكافئين - http://sassmeister.com/gist/77ae29d46ebecd0823ed
لدي إصلاح سأشحنه في غضون ساعتين.
التعليق الأكثر فائدة
يبدو أن أفكاري الأولية كانت خاطئة. تكمن المشكلة في أن مفتاح الخريطة هو اسم لوني. يواجه Libsass بعض المشكلات عندما يتعلق الأمر بتحليل السلاسل ذات الأسماء الملونة ، مثل https://github.com/sass/libsass/issues/558
حالة مخفضة: http://sassmeister.com/gist/d2be1def3619bd6c3a54