2016-09-23 5 views
0

Jemand kann mir erklären, warum meine Hintergrundfarbe in diesem Mixin mit Paletten nicht richtig funktioniert?sass Paletten funktioniert nicht in einem Mixin

// UI Colors 

// Call the color palette modifiers in color values 
@function palette($palette, $shade: 'base') { 
    @return map-get(map-get($color-palettes, $palette), $shade); 
} 

$white: #fff; 
$black: #0b0b0b; 
$grey : #797e83; 

$color-palettes: (
    grey: (
     xx-light : lighten($grey, 43%), 
     x-light : lighten($grey, 35%), 
     light : lighten($grey, 12%), 
     base  : $grey, 
     dark  : darken($grey, 8%), 
     x-dark : darken($grey, 16%) 
    ), 
    black: (
     light : lighten($black, 10%), 
     base : $black, 
     dark : darken($black, 10%) 
    ) 
); 

$ui-colors: (
    sidebar-close : $white, 
    filter-close : $white, 
    search-close : palette(black, dark), 
); 

// Generate modifier color classes 
@mixin bg-colors($map) { 
    @each $theme, $color in $map { 
    &-#{$theme} { 
     background-color: $color; 
    } 
    } 
} 

.btn { 
    @include colors($ui-colors); 

} 

Ergebnis:

.btn-search-open { 
    background-color: invalid not working; 
} 

Also, wenn mein bg gemacht wird apear nicht jemand wissen, was es ist passiert?

+1

Ihre mixin Name ist 'bg-colors' nicht' colors' – blonfu

Antwort

1

Ich schrieb eine Funktion palette, die einen Schlüsselwert aus Karte zurückgibt.

Sassmeister demo.

SCSS:

$white : #fff; 
$black : #0b0b0b; 
$grey : #797e83; 

$color-palettes: (
    grey: (
     xx-light : lighten($grey, 43%), 
     x-light : lighten($grey, 35%), 
     light : lighten($grey, 12%), 
     base  : $grey, 
     dark  : darken($grey, 8%), 
     x-dark : darken($grey, 16%) 
    ), 
    black: (
     light : lighten($black, 10%), 
     base : $black, 
     dark : darken($black, 10%) 
    ) 
); 

@function palette($palettes, $palette, $tone: 'base') { 
    @return map-get(map-get($palettes, $palette), $tone); 
} 

$ui-colors: (
    sidebar-close : $white, 
    filter-close : $white, 
    search-close : palette($color-palettes, black, dark) 
); 

@mixin bg-colors($map) { 
    @each $theme-name, $theme in $map { 
    &-#{$theme-name} { 
     background-color: $theme; 
    } 
    } 
} 

.btn { 
    @include bg-colors($ui-colors); 
} 

Css Ausgang:

.btn-sidebar-close { 
    background-color: #fff; 
} 
.btn-filter-close { 
    background-color: #fff; 
} 
.btn-search-close { 
    background-color: black; 
} 
+0

Dank das ist, was ich suche, ich habe gerade einen kleinen Problem Ich möchte eine andere Palette verwenden http://pastebin.com/awJXSwBt, also, wenn ich den Wert drucke kommt mit palette: .lol-search-close { background-color: palette (schwarz, dunkel); }, weißt du, was ich falsch mache? – Raduken

+0

@Raduken Ist "Palette" Ihre benutzerdefinierte Funktion? Gibt es Wert von Karte für Schlüssel zurück? Können Sie diesen Funktionscode auch einfügen? – 3rdthemagical

+0

Entschuldigung, ich habe meine Frage bearbeitet, ich hoffe jetzt mehr Sinn machen, ich möchte den Palletter in $ Ui-Farben verwenden, aber diese Rückkehr ungültige CSS, Sinn jetzt? Danke für Ihre Hilfe. – Raduken