Ich habe das folgende Mixin geschrieben, um dynamisch zwei Klassen für einen Titel und Untertitel zu erstellen. Ich wollte in der Lage sein, den Klassen Arrays von Argumenten hinzuzufügen. Aber ich habe es nur funktioniert, wenn ich mehrere Werte in den Arrays habe, nicht mit nur einem. Ich vermute, dass es nicht als Array behandelt wird.SASS Mixin mit dynamischer Argumentliste funktioniert nicht mit nur einem Argument
@mixin argument ($key, $value) {
#{$key}: $value;
}
// dynamic mixin that creates two seperate classes for a header title and subtitle
@mixin header-titles($name, $title-size, $title-color, $sub-size, $sub-color, $title-extra: false, $sub-extra: false) {
.#{$name}-title {
@include font($bold-font, 900, $title-size, $title-color)
@if $title-extra {
@each $t-extra in $title-extra{
@include argument(nth($t-extra,1),nth($t-extra,2));
}
}
}
.#{$name}-subtitle {
@include font($bold-font, 900, $sub-size, $sub-color)
@if $sub-extra {
@each $s-extra in $sub-extra {
@include argument(nth($s-extra,1),nth($s-extra,2));
}
}
}
}
Es funktioniert, wenn Sie es so in SASS nennen und mix.sass('homepage.scss');
für sie mit großen Schluck Uhr und Laravel Elixier laufen.
@include header-titles(
'fubar',
$fubar-title-font-size,
$fubar-title-text-color,
$fubar-sub-title-font-size,
$fubar-sub-title-text-color,
((margin, 50px 0 0 0),(padding, 50px 0 0 0)),((margin, 50px 0 0 0),(padding, 50px 0 0 0))
)
Aber nicht, wenn wie diese dann
@include header-titles(
'fubar',
$fubar-title-font-size,
$fubar-title-text-color,
$fubar-sub-title-font-size,
$fubar-sub-title-text-color,
((margin, 50px 0 0 0)),((margin, 50px 0 0 0))
)
genannt bekomme ich folgende Fehlermeldung:
Error: index out of bounds for `nth($list, $n)`
on line 86 of resources/assets/sass/_mixins.scss
>> @include argument(nth($t-extra,1),nth($t-extra,2));
------------------------------------------^
at options.error ({obfuscated projectdirname}\node_modules\node-sass\lib\index.js:286:26)
status: 1,
file: '{obfuscated projectdirname}/resources/assets/sass/_mixins.scss',
line: 86,
column: 51,
message: 'resources\\assets\\sass\\_mixins.scss\nError: index out of bounds for `nth($list, $n)`\n on line 86 of resources/assets/sass/_mixins.scss\n>> @include argument(nth($t-extra,1),nth($t-extra,2));\n ------------------------------------------^\n',
formatted: 'Error: index out of bounds for `nth($list, $n)`\n on line 86 of resources/assets/sass/_mixins.scss\n>> @include argument(nth($t-extra,1),nth($t-extra,2));\n ------------------------------------------^\n',
messageFormatted: 'resources\\assets\\sass\\_mixins.scss\nError: index out of bounds for `nth($list, $n)`\n on line 86 of resources/assets/sass/_mixins.scss\n>> @include argument(nth($t-extra,1),nth($t-extra,2));\n ------------------------------------------^\n',
messageOriginal: 'index out of bounds for `nth($list, $n)`',
relativePath: 'resources\\assets\\sass\\_mixins.scss',
name: 'Error',
stack: 'Error: resources\\assets\\sass\\_mixins.scss\nError: index out of bounds for `nth($list, $n)`\n on line 86 of resources/assets/sass/_mixins.scss\n>> @include argument(nth($t-extra,1),nth($t-extra,2));\n ------------------------------------------^\n\n at options.error ({obfuscated projectdirname}\\exroot\\node_modules\\node-sass\\lib\\index.js:286:26)',
showStack: false,
showProperties: true,
plugin: 'gulp-sass' }
{ Error: resources\assets\sass\_mixins.scss
Error: index out of bounds for `nth($list, $n)`
on line 86 of resources/assets/sass/_mixins.scss
>> @include argument(nth($t-extra,1),nth($t-extra,2));
------------------------------------------^
at options.error ({obfuscated projectdirname}\node_modules\node-sass\lib\index.js:286:26)
status: 1,
file: '{obfuscated projectdirname}/resources/assets/sass/_mixins.scss',
line: 86,
column: 51,
message: 'resources\\assets\\sass\\_mixins.scss\nError: index out of bounds for `nth($list, $n)`\n on line 86 of resources/assets/sass/_mixins.scss\n>> @include argument(nth($t-extra,1),nth($t-extra,2));\n ------------------------------------------^\n',
formatted: 'Error: index out of bounds for `nth($list, $n)`\n on line 86 of resources/assets/sass/_mixins.scss\n>> @include argument(nth($t-extra,1),nth($t-extra,2));\n ------------------------------------------^\n',
messageFormatted: 'resources\\assets\\sass\\_mixins.scss\nError: index out of bounds for `nth($list, $n)`\n on line 86 of resources/assets/sass/_mixins.scss\n>> @include argument(nth($t-extra,1),nth($t-extra,2));\n ------------------------------------------^\n',
messageOriginal: 'index out of bounds for `nth($list, $n)`',
relativePath: 'resources\\assets\\sass\\_mixins.scss',
name: 'Error',
stack: 'Error: resources\\assets\\sass\\_mixins.scss\nError: index out of bounds for `nth($list, $n)`\n on line 86 of resources/assets/sass/_mixins.scss\n>> @include argument(nth($t-extra,1),nth($t-extra,2));\n ------------------------------------------^\n\n at options.error ({obfuscated projectdirname}\\node_modules\\node-sass\\lib\\index.js:286:26)',
showStack: false,
showProperties: true,
plugin: 'gulp-sass' }
Mein Google-Fu mich verlassen, wenn sie versuchen, herauszufinden, was dieser Fehler bedeutet.
Meine Frage: was habe ich hier falsch gemacht? Gibt es vielleicht einen besseren Weg, dies zu tun?
Sorry für den langen Code-Blöcke ...
Dieser 'Hack' funktioniert! Aber es ist sehr seltsam und kontraintuitiv Verhalten imho.Thanks! – Sitethief
Ja, ich stimme @Sitethief zu, aber es scheint als gäbe es keine Alternative außer dem Hack :( – Harry
Lassen Sie uns [diese Diskussion im Chat fortsetzen] (http://chat.stackoverflow.com/rooms/134788/discussion-between-sitethief -und-harry). – Sitethief