Sass (Syntactically Awesome Stylesheets) ist eine Stylesheet-Sprache, welche in gut formatierte standard CSS umgewandelt wird.
Mit dieser ist es möglich Variables, Nesting, Mixings und Selector Inheritance und vieles mehr zu verwenden. Die Dateiendung ist „.scss“. Anbei einige Beispiele…
Variablen
Man definiert einen Wert, welcher dann an entsprechender Stelle im Code immer wieder eingefügt werden kann.
$black: #222222; $blue: #083672; $white: #fff; $arrow_white: url('../img/arrow_white.png'); $arrow_blue: url('../img/arrow_blue.png'); body { font-family: Arial, Verdana, sans-serif; font-size: 0.8em; color: $black; text-align: center; background: $white; } a { display: block; background: $blue $arrow_white no-repeat 205px 13px; } |
Nesting
Mit dieser Methode kann man sich super viel Schreibarbeit ersparen. Es werden einfach die Elemente ineinander verschachtelt.
nav { position: relative; padding: 0 0 0 240px; width: 710px; li { display: inline; float: left; a { display: block; float: left; margin: 0 10px 0 0; font-size: 0.85em; } } /* li */ } /* nav */ |
Mixins
Mit dieser Methode ist es möglich mehrere CSS-Definitionen einzufügen. Sehr hilfreich z.B. bei den CSS3 Definitionen, die für jeden Browser speziell definiert werden müssen.
Definition Mixin
@mixin verlaufZweiFarben($hauptfarbe, $farbe1) { background: $hauptfarbe; /* Old browsers */ background: -moz-linear-gradient(top, $hauptfarbe 0%, $farbe1 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$hauptfarbe), color-stop(100%,$farbe1)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, $hauptfarbe 0%,$farbe1 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, $hauptfarbe 0%,$farbe1 100%); /* Opera11.10+ */ background: -ms-linear-gradient(top, $hauptfarbe 0%,$farbe1 100%); /* IE10+ */ filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='$hauptfarbe', endColorstr='$farbe1',GradientType=0 )"; /* IE6-9 */ background: linear-gradient(top, $hauptfarbe 0%,$farbe1 100%); /* W3C */ } |
Integration Mixin
article { @include verlaufZweiFarben; } |
Selector Inheritance
Mit dieser Methode ist es möglich Stile zu kopieren, ohne die CSS Eigenschaften zu duplizieren.
.infobox { border: 1px solid #000; background: #dddddd; color: #000; width: 100px; } |
Hier werden jetzt alle Styles, die bereits in “.infobox” definiert wurden integriert.
.teaser { @extend .infobox; font-size: 1em; } |
Funktionen
$color: #777777; #content { background:-color: darken($color,20%); color: lighten($color,50%); } Definition als CSS #content { background-color: #444444; color: #f6f6f6; } |
Weitere Informationen sind auf der offiziellen SASS Homepage zu finden unter sass-lang.com. Für alle, die die Firebug Extension für den Firefox nutzen, gibt es zudem die Erweiterung FireSass (Update: Link entfernt da 404. Weitere Infos gibt es auch unter https://digital.com/blog/webextensions-firefox/).
SASS in TYPO3
Die Extension sassify unterstützt die Integration von SASS in TYPO3. Einfach herunter laden, installieren, Include static Template einbinden und Ts Code definieren. z.B.:
plugin.tx_sassify_plugin { debugInfo = 0 showExceptions = 1 cache = 0 stylesheets { 10 = reset.scss 10 { filenameWrap.wrap = fileadmin/templates/scss/| media = screen } 20 = screen.scss 20 { filenameWrap.wrap = fileadmin/templates/scss/| media = screen } 50 = print.scss 50 { filenameWrap.wrap = fileadmin/templates/scss/| media = print } } } |
Seitenspezifische CSS können einfach mittels Conditions definiert werden
[PIDinRootline = 2] plugin.tx_sassify_plugin.stylesheets.21 = home.scss plugin.tx_sassify_plugin.stylesheets.21.filenameWrap.wrap = fileadmin/templates/scss/| [end] |
Wer von euch auf den Geschmack gekommen ist und SASS ausprobieren möchte, kann auch ganz einfach seine bisherigen css Dateien umbenennen in .scss und die neuen Sachen Stück für Stück integrieren. Man kann klein anfangen – z.B. erst einmal nur die Farben als Variablen definieren und sich dann allmählich weiter entwickeln. Ich habe mich super schnell dran gewöhnt und mag SASS absolut nicht mehr missen.