2011-02-15 1 views
3

Diverses nouvelles propriétés CSS3 acceptent des ensembles infinis de valeurs, c'est-à-dire box-shadow et un dégradé d'arrière-plan.Existe-t-il un moyen d'obtenir un tableau des paramètres transmis à un mixin Sass?

Prendre box-shadow à titre d'exemple, dans l'idéal, on devrait pouvoir faire:

@include box-shadow(10px 15px 10px #FF0000, 15px 10px 10px #0000FF); 

autant de paramètres que vous le souhaitez. Le problème est que Sass exige un nombre définitif de paramètres, et même si ce n'était pas le cas, je ne connais aucun moyen de les contourner.

Le meilleur mixin je peux penser à ce jour serait comme si:

@mixin box-shadow($v1: 0 0 10px #CCC, $v2: "", $v3: "", $v4: "", $v5: "") { 
    @if $v5 != "" { 
    -webkit-box-shadow: $v1, $v2, $v3, $v4, $v5; 
    -moz-box-shadow: $v1, $v2, $v3, $v4, $v5; 
    -o-box-shadow: $v1, $v2, $v3, $v4, $v5; 
    box-shadow: $v1, $v2, $v3, $v4, $v5; 
    } @else if $v4 != "" { 
    ... 
    } @else { 
    -webkit-box-shadow: $v1; 
    -moz-box-shadow: $v1; 
    -o-box-shadow: $v1; 
    box-shadow: $v1; 
    } 
} 

Je suis en train d'écrire un ensemble de fournisseur-restauration mixins CSS3 Sass. (Disponible chez: https://github.com/stevelacey/sass-css3-mixins).

De toute évidence, ce sont des déchets, longue et limitée à 5 styles, y at-il un meilleur moyen?


Edit:

@Riklomas m'a souligné ceci: https://gist.github.com/601806 qui est au moins moins répétitif que mon code, toujours à la recherche d'une solution appropriée.

+1

simple: laisser seul SASS et commencer à utiliser LESSphp :). – mingos

+3

J'ai abandonné MOINS pour SASS. La documentation est mauvaise et l'analyse syntaxique est incohérente entre les analyseurs (php/ruby ​​/ js + node). Cela et SASS est beaucoup plus innovant; tellement plus de fonctionnalités - peut même moins faire si c'est comme ci-dessus? De plus, comment votre commentaire est-il valide? J'ai eu encore moins de succès en réalisant ce qui précède en MOINS. – Steve

+0

Sass a ajouté cette fonctionnalité en 3.2, la syntaxe ressemble à ceci: 'box-shadow ($ values ​​...)' – cimmanon

Répondre

-3

En bref, non.

Mais je n'ai plus à m'en soucier, Compass enveloppe quelque chose de semblable à ce qui précède plutôt bien.

7

Salut, je suis membre de l'équipe Sass Core. J'espère ajouter une fonctionnalité var-args à sass dans le futur, mais ce n'est pas possible actuellement.

3

Avec SASS 3.2, vous pouvez désormais utiliser mixins qui fonctionnent comme ceci:

@mixin box-shadow($values...){ 
    -webkit-box-shadow: $values; 
    -moz-box-shadow: $values; 
    box-shadow: $values; 
} 

source

Questions connexes