Sass-Grundlagen
Bevor Sie Sass verwenden können, müssen Sie es in Ihrem Projekt einrichten. Wenn Sie hier nur stöbern möchten, legen Sie los, aber wir empfehlen Ihnen, Sass zuerst zu installieren. Gehen Sie hierhin, wenn Sie lernen möchten, wie Sie alles einrichten.
PräprozessierungPräprozessierung Permalink
CSS allein kann Spaß machen, aber Stylesheets werden größer, komplexer und schwerer zu warten. Hier kann ein Präprozessor helfen. Sass verfügt über Funktionen, die in CSS noch nicht vorhanden sind, wie z. B. Verschachtelung, Mixins, Vererbung und andere nette Goodies, die Ihnen helfen, robuste, wartbare CSS zu schreiben.
Sobald Sie mit Sass experimentieren, wird es Ihre vorverarbeitete Sass-Datei nehmen und als normale CSS-Datei speichern, die Sie in Ihrer Website verwenden können.
Der direkteste Weg, dies zu erreichen, ist über Ihr Terminal. Sobald Sass installiert ist, können Sie Ihr Sass mit dem Befehl sass in CSS kompilieren. Sie müssen Sass mitteilen, aus welcher Datei erstellt werden soll und wohin die CSS ausgegeben werden soll. Wenn Sie beispielsweise sass input.scss output.css von Ihrem Terminal aus ausführen, wird eine einzelne Sass-Datei, input.scss, genommen und in output.css kompiliert.
Sie können einzelne Dateien oder Verzeichnisse auch mit dem Flaggen --watch überwachen. Die Watch-Flagge weist Sass an, Ihre Quelldateien auf Änderungen zu überwachen und jedes Mal CSS neu zu kompilieren, wenn Sie Ihre Sass speichern. Wenn Sie Ihre input.scss-Datei überwachen (anstatt sie manuell zu erstellen) möchten, fügen Sie einfach die Watch-Flagge zu Ihrem Befehl hinzu, so .
sass --watch input.scss output.css
Sie können Verzeichnisse überwachen und in diese ausgeben, indem Sie Ordnerpfade als Eingabe und Ausgabe verwenden und diese durch einen Doppelpunkt trennen. In diesem Beispiel
sass --watch app/sass:public/stylesheets
Sass würde alle Dateien im Ordner app/sass auf Änderungen überwachen und CSS in den Ordner public/stylesheets kompilieren.
💡 Lustige Tatsache
Sass hat zwei Syntaxen! Die SCSS-Syntax (.scss) wird am häufigsten verwendet. Sie ist eine Obermenge von CSS, was bedeutet, dass jedes gültige CSS auch gültiges SCSS ist. Die eingerückte Syntax (.sass) ist ungewöhnlicher: Sie verwendet Einrückungen anstelle von geschweiften Klammern, um Anweisungen zu verschachteln, und Zeilenumbrüche anstelle von Semikolons, um sie zu trennen. Alle unsere Beispiele sind in beiden Syntaxen verfügbar.
VariablenVariablen Permalink
Betrachten Sie Variablen als eine Möglichkeit, Informationen zu speichern, die Sie in Ihrem Stylesheet wiederverwenden möchten. Sie können Dinge wie Farben, Schriftstapel oder beliebige CSS-Werte speichern, von denen Sie glauben, dass Sie sie wiederverwenden möchten. Sass verwendet das $-Symbol, um etwas zu einer Variable zu machen. Hier ist ein Beispiel
SCSS-Syntax
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
font: 100% $font-stack;
color: $primary-color;
}
Sass-Syntax
$font-stack: Helvetica, sans-serif
$primary-color: #333
body
font: 100% $font-stack
color: $primary-color
CSS-Ausgabe
body {
font: 100% Helvetica, sans-serif;
color: #333;
}
Wenn Sass verarbeitet wird, nimmt es die für $font-stack und $primary-color definierten Variablen und gibt normales CSS aus, wobei unsere Variablenwerte in den CSS eingefügt werden. Dies kann äußerst wirkungsvoll sein, wenn Sie mit Markenfarben arbeiten und diese auf der gesamten Website konsistent halten.
VerschachtelungVerschachtelung Permalink
Beim Schreiben von HTML haben Sie wahrscheinlich bemerkt, dass es eine klare verschachtelte und visuelle Hierarchie hat. CSS hingegen nicht.
Sass ermöglicht es Ihnen, Ihre CSS-Selektoren so zu verschachteln, dass sie derselben visuellen Hierarchie Ihres HTML folgen. Beachten Sie, dass übermäßig verschachtelte Regeln zu überqualifiziertem CSS führen, das schwer zu warten sein kann und generell als schlechte Praxis gilt.
Mit diesem im Hinterkopf, hier ist ein Beispiel für einige typische Stile für die Navigation einer Website
SCSS-Syntax
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
Sass-Syntax
nav
ul
margin: 0
padding: 0
list-style: none
li
display: inline-block
a
display: block
padding: 6px 12px
text-decoration: none
CSS-Ausgabe
nav ul {
margin: 0;
padding: 0;
list-style: none;
}
nav li {
display: inline-block;
}
nav a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
Sie werden feststellen, dass die Selektoren ul, li und a innerhalb des nav-Selektors verschachtelt sind. Dies ist eine hervorragende Möglichkeit, Ihr CSS zu organisieren und es lesbarer zu machen.
PartialsPartials Permalink
Sie können partielle Sass-Dateien erstellen, die kleine CSS-Schnipsel enthalten, die Sie in andere Sass-Dateien einfügen können. Dies ist eine großartige Möglichkeit, Ihr CSS zu modularisieren und die Wartung zu erleichtern. Ein Partial ist eine Sass-Datei, die mit einem führenden Unterstrich benannt ist. Sie könnten sie zum Beispiel _partial.scss nennen. Der Unterstrich signalisiert Sass, dass die Datei nur eine partielle Datei ist und nicht als CSS-Datei generiert werden soll. Sass-Partials werden mit der @use-Regel verwendet.
ModuleModule Permalink
- Dart Sass
- seit 1.23.0
- LibSass
- ✗
- Ruby Sass
- ✗
Nur Dart Sass unterstützt derzeit @use. Benutzer anderer Implementierungen müssen stattdessen die @import-Regel verwenden.
Sie müssen nicht Ihr gesamtes Sass in einer einzigen Datei schreiben. Sie können es mit der @use-Regel beliebig aufteilen. Diese Regel lädt eine andere Sass-Datei als Modul, was bedeutet, dass Sie in Ihrer Sass-Datei mit einem Namespace, der auf dem Dateinamen basiert, auf deren Variablen, Mixins und Funktionen verweisen können. Die Verwendung einer Datei beinhaltet auch die von ihr generierte CSS in Ihrer kompilierten Ausgabe!
SCSS-Syntax
// _base.scss
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
font: 100% $font-stack;
color: $primary-color;
}
// styles.scss
@use 'base';
.inverse {
background-color: base.$primary-color;
color: white;
}
Sass-Syntax
// _base.sass
$font-stack: Helvetica, sans-serif
$primary-color: #333
body
font: 100% $font-stack
color: $primary-color
// styles.sass
@use 'base'
.inverse
background-color: base.$primary-color
color: white
CSS-Ausgabe
body {
font: 100% Helvetica, sans-serif;
color: #333;
}
.inverse {
background-color: #333;
color: white;
}
Beachten Sie, dass wir @use 'base'; in der Datei styles.scss verwenden. Wenn Sie eine Datei verwenden, müssen Sie die Dateierweiterung nicht angeben. Sass ist schlau und findet sie für Sie.
MixinsMixins Permalink
Einige Dinge in CSS sind etwas mühsam zu schreiben, besonders mit CSS3 und den vielen vorhandenen Vendor-Präfixen. Ein Mixin ermöglicht es Ihnen, Gruppen von CSS-Deklarationen zu erstellen, die Sie auf Ihrer gesamten Website wiederverwenden möchten. Es hilft, Ihr Sass sehr DRY zu halten. Sie können sogar Werte übergeben, um Ihr Mixin flexibler zu gestalten. Hier ist ein Beispiel für theme.
SCSS-Syntax
@mixin theme($theme: DarkGray) {
background: $theme;
box-shadow: 0 0 1px rgba($theme, .25);
color: #fff;
}
.info {
@include theme;
}
.alert {
@include theme($theme: DarkRed);
}
.success {
@include theme($theme: DarkGreen);
}
Sass-Syntax
@mixin theme($theme: DarkGray)
background: $theme
box-shadow: 0 0 1px rgba($theme, .25)
color: #fff
.info
@include theme
.alert
@include theme($theme: DarkRed)
.success
@include theme($theme: DarkGreen)
CSS-Ausgabe
.info {
background: DarkGray;
box-shadow: 0 0 1px rgba(169, 169, 169, 0.25);
color: #fff;
}
.alert {
background: DarkRed;
box-shadow: 0 0 1px rgba(139, 0, 0, 0.25);
color: #fff;
}
.success {
background: DarkGreen;
box-shadow: 0 0 1px rgba(0, 100, 0, 0.25);
color: #fff;
}
Um ein Mixin zu erstellen, verwenden Sie die Direktive @mixin und geben ihm einen Namen. Wir haben unser Mixin theme genannt. Wir verwenden auch die Variable $theme innerhalb der Klammern, damit wir einen theme von beliebigem Wert übergeben können. Nachdem Sie Ihr Mixin erstellt haben, können Sie es als CSS-Deklaration verwenden, beginnend mit @include gefolgt vom Namen des Mixins.
Erweitern/VererbungErweitern/Vererbung Permalink
Mit @extend können Sie einen Satz von CSS-Eigenschaften von einem Selektor auf einen anderen übertragen. In unserem Beispiel erstellen wir eine einfache Reihe von Meldungen für Fehler, Warnungen und Erfolge, indem wir eine weitere Funktion verwenden, die mit extend Hand in Hand geht: Platzhalterklassen. Eine Platzhalterklasse ist ein spezieller Klassentyp, der nur gedruckt wird, wenn er erweitert wird, und dazu beitragen kann, Ihr kompiliertes CSS ordentlich und sauber zu halten.
SCSS-Syntax
/* This CSS will print because %message-shared is extended. */
%message-shared {
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
// This CSS won't print because %equal-heights is never extended.
%equal-heights {
display: flex;
flex-wrap: wrap;
}
.message {
@extend %message-shared;
}
.success {
@extend %message-shared;
border-color: green;
}
.error {
@extend %message-shared;
border-color: red;
}
.warning {
@extend %message-shared;
border-color: yellow;
}
Sass-Syntax
/* This CSS will print because %message-shared is extended. */
%message-shared
border: 1px solid #ccc
padding: 10px
color: #333
// This CSS won't print because %equal-heights is never extended.
%equal-heights
display: flex
flex-wrap: wrap
.message
@extend %message-shared
.success
@extend %message-shared
border-color: green
.error
@extend %message-shared
border-color: red
.warning
@extend %message-shared
border-color: yellow
CSS-Ausgabe
/* This CSS will print because %message-shared is extended. */
.warning, .error, .success, .message {
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
.success {
border-color: green;
}
.error {
border-color: red;
}
.warning {
border-color: yellow;
}
Was der obige Code tut, ist, .message, .success, .error und .warning so zu gestalten, dass sie sich wie %message-shared verhalten. Das bedeutet, dass überall dort, wo %message-shared vorkommt, auch .message, .success, .error, & .warning vorkommen. Die Magie geschieht in der generierten CSS, wo jede dieser Klassen dieselben CSS-Eigenschaften wie %message-shared erhält. Dies hilft Ihnen, die Notwendigkeit zu vermeiden, mehrere Klassennamen auf HTML- Elementen zu schreiben.
Sie können die meisten einfachen CSS-Selektoren zusätzlich zu Platzhalterklassen in Sass erweitern, aber die Verwendung von Platzhaltern ist der einfachste Weg, um sicherzustellen, dass Sie keine Klasse erweitern, die woanders in Ihren Stilen verschachtelt ist, was zu unbeabsichtigten Selektoren in Ihrem CSS führen kann.
Beachten Sie, dass das CSS in %equal-heights nicht generiert wird, da %equal-heights niemals erweitert wird.
OperatorenOperatoren Permalink
Mathematik in Ihrem CSS ist sehr hilfreich. Sass verfügt über eine Reihe von Standard-Mathematikoperatoren wie +, -, *, math.div() und %. In unserem Beispiel werden wir einige einfache Berechnungen durchführen, um die Breiten für einen article und einen aside zu ermitteln.
SCSS-Syntax
@use "sass:math";
.container {
display: flex;
}
article[role="main"] {
width: math.div(600px, 960px) * 100%;
}
aside[role="complementary"] {
width: math.div(300px, 960px) * 100%;
margin-left: auto;
}
Sass-Syntax
@use "sass:math"
.container
display: flex
article[role="main"]
width: math.div(600px, 960px) * 100%
aside[role="complementary"]
width: math.div(300px, 960px) * 100%
margin-left: auto
CSS-Ausgabe
.container {
display: flex;
}
article[role=main] {
width: 62.5%;
}
aside[role=complementary] {
width: 31.25%;
margin-left: auto;
}
Wir haben ein sehr einfaches flüssiges Raster auf Basis von 960px erstellt. Operationen in Sass ermöglichen es uns, Pixelwerte zu nehmen und sie ohne viel Aufwand in Prozente umzuwandeln.