2016-11-04 5 views
0

Wie kann ich prüfen, ob alle an einen Mixin übergebenen Parameter den gleichen Wert haben?sass mixin parameter - nach Mustern suchen

Pseudocode:

@mixin cols($width...) { 
    @if (all $width values are the same) { 
    // do something 
    } 
} 

.three-cols { 
    @include cols(4,4,4); 
} 

Antwort

0

ich die Aufgabe, zu überprüfen, übertragen, wenn die Werte auf eine function gleich sind, die dann von der mixin so genannt werden kann, dass sie beide haben die alleinige Verantwortung.

@function check_values($values...) { 
    $counter: 0; 
    @if (nth($values, 1) != nth($values,2)) { 
    $counter: 0; 
    } 
    @else { 
    $counter: $counter + 1; 
    @for $i from 2 to length($values) { 
     $counter: if(nth($values, $i) == nth($values, $i + 1), $counter + 1, $counter); 
    } 
    } 
    @return if($counter + 1 == length($values), true, false) 
} 

Die function gibt entweder wahr oder falsch und kann auf eine beliebige Anzahl von args

@debug check_values(2,2,1,1,2,2); //false 
@debug check_values(2,2,2); //true 
@debug check_values(2,2,2,1); //false 

Die function nur in der

@mixin cols($width...) { 
    @if (check_values($width...)) { 
    // do something 
    } 
} 
mixin aufgerufen werden muss verwendet werden,

Hoffe, das hilft