2011-04-08 2 views
8

Est-il possible de définir une variable sass au moment de la compilation? Je veux essentiellement à faire:SASS: Définir une variable lors de la compilation


$color: red !default; 
div#head { 

    background-color: $color; 

}

Quand je compile à css je veux mettre $ couleur « bleu » (de préférence de la ligne de commande). Est-ce que quelqu'un a été capable de faire cela?

Merci, Chris

+0

Je ne suis pas sûr de comprendre votre question, vous voulez définir cette variable dans la ligne de commande? Un peu comme 'sass --style compressed --watch scss: css --vars $ color = blue;' '<- cette ligne ne fonctionnera pas, je l'ai juste fait pour illustrer ma question' – Jannis

+0

Oui, c'est exactement ce que je voudrais faire! – Kenzic

+1

Dans ce cas, je ne pense pas que ce soit possible pour le moment. Désolé, je ne pourrais pas être plus utile. La seule chose que je peux imaginer que vous pourriez faire est de créer un script bash/ruby ​​personnalisé qui ajoute une variable à un fichier puis compile une pile de fichiers scss à css je pense. – Jannis

Répondre

6

Je trouve cela à leur FAQ http://sass-lang.com/docs/yardoc/file.FAQ.html

Si vous voulez juste passer quelques variables du CSS à chaque fois qu'il sera compilé, comme l'utilisation de --watch, vous pouvez utiliser Sass functions pour définir des scripts Ruby pour interroger même une base de données. Mais le code ne sera compilé qu'une seule fois, et servi statiquement.

Mais si vous avez besoin de recompiler à chaque demande avec différentes options,

vous pouvez utiliser Sass::Engine pour rendre le code, en utilisant le :custom option de transmettre des données qui can be accessed de nos fonctions Sass

On dirait que ce n'est pas recommandé, cependant. Probablement pour des raisons de performance.

6

Une autre des options de ligne de commande est de créer d'autres fichiers d'attribuer des valeurs aux variables.

Supposons que votre code ci-dessus se trouve dans un fichier nommé 'style.scss'. Pour définir $ couleur « bleu », créez un fichier tel que:

$color: blue; 
@import "style"; 

et nommez-le à « blue.scss » par exemple. Ensuite, compilez-le avec ci-dessous.

sass blue.scss:style.css 

Lorsque vous souhaitez attribuer une autre valeur à la variable, faire un autre fichier nommé "green.scss" comme:

$color: green; 
@import "style"; 

compiler ensuite avec

sass green.scss:anotherstyle.css 

Il est tracasse mais permet de décider des valeurs des variables au moment de la compilation.

+1

Don Je ne pense vraiment pas que cela fonctionnera. Mon exemple simple à des fins de démonstration, mais je voudrais définir plusieurs variables. – Kenzic

+1

Bien sûr, vous pouvez mettre plusieurs variables dans un fichier d'importation. Voulez-vous dire que vous avez besoin de générer des fichiers individuels avec beaucoup de combinaison de valeurs comme {var1: val1A, var2: val2A, ...} à fileA.css, {var1: val1B, var2: val2B, ...} à fileB .css, fichierC.css fichierD.css ...? Si c'est le cas, tant pis ma réponse ne peut pas être utile. Mais c'est quand même utile quand vous voulez générer des fichiers css qui ont peu de différences entre eux à partir d'un fichier scss. E.g. La plupart des styles CSS sont partagés et quelques ajustements sont nécessaires pour adapter les styles à la variation de périphériques tels que PC/tablette/smartphone. Il n'a besoin que de 3 fichiers pour définir un ensemble de vars. – reppets

+0

Ou si vous voulez dire que vous voulez essayer de nombreuses valeurs adhoc, éditez le fichier d'importation et lancez sass avec --watch option serait utile. – reppets

Questions connexes