2013-06-13 12 views
28

Ich versuche, jqtouch Theming, die auf SASS und COMPASS basiert verwenden. Ich habe eine Datei custom.scss mit dem einfachstenen Code, ein Import und eine Variable zu überschreiben:Wie überschreiben SCSS-Variablen beim Übersetzen zu CSS

@import 'jqtouch'; 

// Override variables 
$base-color: #fe892a;/* The default base which is later used for toolbar, list, and button backgrounds.*/ 

Wenn ich jetzt die SCSS-Datei CSS kompiliert, wird es im Grunde erzeugt nur die jQTouch CSS mit meinem Dateinamen. Die Farbspezifikation ist nirgendwo zu sehen, obwohl die Variable pro Dokumentation (Official Guide) und in der Datei jqtouch.scss, die ich zum Anpassen importiere, definitiv korrekt ist.

Ich laufe Sass 3.2.9 und Compass 0.12.2 auf einem Windows-Rechner.

Ich habe es mit mehr Variablen und verschiedenen Dateiimporten versucht, aber das Ergebnis ist immer, dass meine Override-Werte nicht enthalten sind.

Die Ruby-Konfigurationsdatei für Kompass scheint unverdächtig zu sein.

Hat jemand eine Idee, was schief läuft, so dass meine Override-Werte ignoriert werden?

+0

Wie es in der Importdatei stellt sich heraus (jqtouch.scss) die Werte der Variablen wurden fest auf Farbwerte festgelegt. Daher konnten sie nicht überschrieben werden. Ich habe die hart codierten Werte einfach kommentiert und konnte dann meine eigenen Werte setzen. – bouscher

+0

Ich hatte eine ähnliche Frage und kam mit meiner eigenen Lösung: [Kommandozeilenargument als var in Sass, für hartcodierte CDN-URLs beim Kompilieren] (http://stackoverflow.com/a/31406151/2563782) –

Antwort

52

Sie setzen die Farbe nach es wurde bereits verwendet. Im Grunde, was Sie versuchen, dies zu tun ist:

$color: red; 

.foo { 
    background: $color; 
} 

$color: green; 

Je nachdem, wie jQTouch geschrieben wird, können Sie nicht in der Lage sein, die Farben überhaupt zu ändern. Sie müssen die Variablen als Standard festgelegt, um werden, um sie vor der Zeit zu überschreiben:

$color: green; 
$color: red !default; // red is only used if $color is not already set 

.foo { 
    background: $color; // color is green 
} 

So sollte Ihr Code als solche geschrieben werden:

// Override variables 
$base-color: #fe892a;/* The default base which is later used for toolbar, list, and button backgrounds.*/ 

@import 'jqtouch'; 
+0

Leider das ist es nicht, natürlich war dein Setup wie ich angefangen habe, aber es funktioniert auch nicht für mich. – bouscher

+1

Wie sich in der Importdatei (jqtouch.scss) herausstellte, wurden die Werte der Variablen fest auf Farbwerte gesetzt. Daher konnten sie nicht überschrieben werden. Ich habe die hart codierten Werte einfach kommentiert und konnte dann meine eigenen Werte setzen. – bouscher

+0

Suchen wir die gleiche Quelle? Weil die eine, die ich betrachte, Standardwerte verwendet: https://github.com/senchalabs/jQTouch/blob/master/themes/scss/include/_core.scss – cimmanon