SCSS-Snippets
Eine Snippet-Sammlung für SCSS (aka Sass).
SCSS erweitert CSS um einige nützliche Funktionen. Da jede CSS-Datei bereits eine gültige SCSS-Datei ist, ist die Migration sehr einfach.
Verwendung
FIXME Genaue Anleitung
config.rb
erstellen. Diese Datei beschreibt, wo die SCSS-Dateien sind und wohin das CSS generiert werden soll und wie (lesbar oder komprimiert).
SCSS aufrufen:
compass watch /path/to/config/
SCSS überwacht nun die SCSS-Datei und generiert das CSS, sobald sich die Datei ändert.
Variablen
SCSS:
$blue: #3bbfce;
.bla1 {
border-color: $blue;
}
.bla2 {
color: $blue;
}
Wird zu CSS:
.bla1 {
border-color: #3bbfce;
}
.bla2 {
color: #3bbfce;
}
Inline-Variablen
SCSS:
$str: 'test';
.example-#{$str} {
color: black;
}
$str: 'foo';
.example-#{$str} {
color: black;
}
Wird zu CSS:
.example-test {
color: black;
}
.example-foo {
color: black;
}
Berechnungen
SCSS:
$var1: 8px;
$var2: 16px;
$var3: 3px;
.example1 {
border: $var1 / 2 solid blue;
}
.example2 {
margin:$var2 * $var3;
}
Wird zu CSS:
.example1 {
border: 4px solid blue;
}
.example2 {
margin: 48px;
}
Farb-Funktionen
Bei den Funktionen aus example1
ist der erste Parameter eine Farbe und der zweite ein Prozentwert.
Siehe:
SCSS:
.example1 {
color: darken(yellow, 10);
background: lighten(blue, 30);
border-color: saturate(#aa0000, 10);
}
.example2 {
background: mix(yellow, red);
}
Wird zu CSS:
.example1 {
color: #cccc00;
background: #9999ff;
border-color: #aa0000;
}
.example2 {
background: #ff7f00;
}
Nesting
Kind-Elemente können einfach innerhalb ihres Eltern-Elements definiert werden.
SCSS:
.example {
background: lighten(blue, 30);
.child {
background: red;
}
}
Wird zu CSS:
.example {
background: #9999ff;
}
.example .child {
background: red;
}
Mixins
SCSS:
@mixin add-stuff($color) {
color: $color;
background-color: #000;
.child {
padding: 5px;
}
}
.example {
@include add-stuff(blue);
}
Wird zu CSS:
.example {
color: blue;
border-color: #000;
}
.example .child {
padding: 5px;
}
Compass
Installation von Compass
Zunächst einmal muss man Compass installieren.
Unter Mac:
brew install ruby
sudo gem install compass
Dann muss man die Compass-Konfigurationsdatei erstellen. Dazu erzeugt man die Datei resources/scss/config.rb
mit folgendem Inhalt:
# Require any additional compass plugins here.
# Set this to the root of your project when deployed:
http_path = "/../../"
css_dir = "../css"
sass_dir = "."
images_dir = "../images"
#output_style = :compressed
#javascripts_dir = "javascripts"
# To enable relative paths to assets via compass helper functions. Uncomment:
# relative_assets = true
Das Beispiel passt für ein ExtJS4-Projekt. Alternativ kann man die Datei auch von Compass erzeugen lassen. Den genauen Befehl kann man sich in der Compass-Installationsanleitung zusammenbauen lassen.
Nun kann man das SCSS-Verzeichnis überwachen lassen. Compass stellt jede Änderung an den SCSS-Dateien fest und baut dann die CSS-Version. Damit ist ein schnelles arbeiten nach dem dem Motto "SCSS ändern, Speichern, zum Browser wechseln, Reload" möglich.
Überwachung des SCSS-Verzeichnisses:
compass watch resources/scss/
Verwendung von Compass
Für SCSS gibt es eine Mixin-Bibliothek mit dem Namen Compass.
FIXME Compass ist mehr. Nutzt Ruby
Referenz: http://compass-style.org/reference/compass/
SCSS, das Compass verwendet:
@import 'compass';
.example {
@include border-radius(5px);
}
Wird zu CSS:
.example {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
-ms-border-radius: 5px;
-khtml-border-radius: 5px;
border-radius: 5px;
}
Compass bietet dabei auch Konfigurations-Variablen an, über die man z.B. bestimmen kann, für welche Browser Spezial-Support rein soll. Damit kann man beispielsweise manche der speziellen Browser-Regeln im Beispiel oben abschalten.