Eine einfache und einfache Anleitung, um Sass zu verstehen
Vor einiger Zeit hat Thoriq Firdaus einen großartigen Artikel über den Einstieg in Sass geschrieben, der Ihnen gezeigt hat, wie Sie diese äußerst nützliche CSS-Präprozessor-Sprache installieren und verwenden (Sie sollten es vielleicht ausprobieren, um mit dem Programm zu beginnen).
In diesem Artikel dachte ich, ich würde Ihnen ein wenig mehr Einblick geben, was Sie mit Sass machen können und wie Entwickler es jeden Tag verwenden, um besseren und modularen CSS-Code zu erstellen. Springen Sie weiter zum gewünschten Abschnitt:
- Werkzeuge des Handels
- Variablen
- Verschachteln
- Regelsets erweitern
- Mixins
- Platzhalter-Selektoren
- Operationen
- Funktionen
Werkzeuge des Handels
Thoriq zeigte Ihnen, wie Sie Sass von der Kommandozeile aus mit dem Befehl sass --watch
.
Wenn Sie GUI-Tools bevorzugen, können Sie meine persönliche Lieblings-App, Codekit, ein Web-Entwickler-Tool zum Kompilieren von Sass, Verketten, Autoprefixing und vieles mehr verwenden. Prepros ist eine weitere sehr leistungsfähige Anwendung, die auf allen Systemen verwendet werden kann. Beide sind bezahlte Anwendungen, aber es lohnt sich, wenn Sie sie auf lange Sicht verwenden.
Wenn Sie nur Sass ausprobieren möchten, ohne etwas dafür zu bezahlen, können Sie das Terminal oder Koala (hier ist unser Testbericht) verwenden, eine kostenlose plattformübergreifende App mit vielen Funktionen, die sich gegen Premium-Pendants behaupten kann.
Variablen
Eines der ersten Dinge, die Sie brauchen, um sich einzuhüllen, sind Variablen. Wenn Sie von einem PHP oder anderen ähnlichen Programmiersprachen Hintergrund kommen, wird dies für Sie selbstverständlich sein. Variablen dienen zum Speichern von Bits und Stücken von wiederverwendbaren Informationen, wie zum Beispiel einem Farbwert:
$ primary_color: # 666666; .button {Farbe: $ Primärfarbe; } .important {color: $ primary_color; }
Das mag hier nicht so nützlich erscheinen, aber stellen Sie sich vor, Sie haben 3.000 Zeilen Code. Wenn sich Ihr Farbschema ändert, müssen Sie jeden Farbwert in CSS ersetzen. Mit Sass können Sie einfach den Wert der Variablen $primary_color
und damit fertig werden.
Variablen werden zum Speichern von Schriftartnamen, Größen, Farben und einer Vielzahl anderer Informationen verwendet . Für größere Projekte lohnt es sich, alle Ihre Variablen in eine separate Datei zu extrahieren (wir werden uns ansehen, wie dies in Kürze geschieht). Dadurch können Sie Ihr gesamtes Projekt neu einfärben und Zeichensätze und andere wichtige Aspekte ändern, ohne jemals die eigentlichen CSS-Regeln zu berühren . Alles, was Sie tun müssen, ist einige Variablen zu ändern.
Verschachteln
Ein weiteres grundlegendes Feature, das Sass bietet, ist die Fähigkeit, Regeln zu verschachteln . Angenommen, Sie erstellen ein Navigationsmenü. Sie haben ein nav
, das eine ungeordnete Liste, Listenelemente und Links enthält. In CSS können Sie so etwas tun:
#header nav {/ * Regeln für den Navigationsbereich * /} #header nav ul {/ * Regeln für das Menü * /} #header nav li {/ * Regeln für Listenelemente * /} #header nav a {/ * Regeln für Links * /}
In den Selektoren wiederholen wir uns sehr. Wenn Elemente gemeinsame Wurzeln haben, können wir die Verschachtelung verwenden, um unsere Regeln viel sauberer zu schreiben .
So könnte der obige Code in Sass aussehen:
#header {nav {/ * Regeln für den Navigationsbereich * /} ul {/ * Regeln für das Menü * /} li {/ * Regeln für Listenelemente * /} a {/ * Regeln für Links * /}}
Das Nesting ist sehr nützlich, weil es Stylesheets (viel) lesbarer macht . Durch die Verwendung von Verschachtelung zusammen mit der richtigen Einrückung können Sie sehr lesbare Code-Strukturen erreichen, auch wenn Sie eine Menge Code haben.
Ein Nachteil der Verschachtelung ist, dass sie zu unnötiger Spezifität führen kann . Im obigen Beispiel habe ich auf Links mit #header nav a
. Du #header nav ul li a
auch #header nav ul li a
was wahrscheinlich zu viel wäre.
In Sass ist es viel einfacher, sehr spezifisch zu sein, da Sie nur Ihre Regeln verschachteln müssen. Das Folgende ist weit weniger lesbar und ziemlich spezifisch.
#header {nav {/ * Regeln für den Navigationsbereich * / ul {/ * Regeln für das Menü * / li {/ * Regeln für Listenelemente * / a {/ * Regeln für Links * /}}}}}
Regelsets erweitern
Die Erweiterung wird Ihnen vertraut sein, wenn Sie mit objektorientierten Sprachen arbeiten. Es ist am besten durch ein Beispiel zu verstehen, lassen Sie uns 3 Tasten, die leichte Variationen voneinander sind erstellen.
.button {Anzeige: Inline-Block; Farbe: # 000; Hintergrund: # 333; Rand-Radius: 4px; Polsterung: 8px 11px; } .button-primary {@extend .button; Hintergrund: # 0091C2} .button-small {@extend .button; Schriftgröße: 0.9em; Polsterung: 3px 8px; }
Die .button-primary
und .button-small
erweitern alle die .button
Klasse, was bedeutet, dass sie alle ihre Eigenschaften annehmen und dann ihre eigenen definieren.
Dies ist immens nützlich in vielen Situationen, in denen Variationen eines Elements verwendet werden können. Nachrichten (Warnung / Erfolg / Fehler), Schaltflächen (Farben, Größen), Menütypen usw. könnten alle die Erweiterungsfunktionalität für großartige CSS-Effizienz nutzen.
Eine Einschränkung von extends ist, dass sie in Medienanfragen nicht wie erwartet funktionieren . Dies ist ein wenig fortgeschrittener, aber Sie können alles über dieses Verhalten in Grundlegend Platzhalter Selektoren lesen - Platzhalter Selektoren sind spezielle Art von Erweiterung, über die wir bald sprechen werden.
Mixins
Mixins sind ein weiteres beliebtes Merkmal von Präprozessor-Benutzern. Mixins sind wiederverwendbare Regelsätze - perfekt für herstellerspezifische Regeln oder für den Verzicht auf lange CSS-Regeln.
Wie wäre es mit der Erstellung einer Übergangsregel für Hover-Elemente:
@mixing Hover-Effekt {-webkit-Übergang: Hintergrundfarbe 200ms; -moz-Übergang: Hintergrundfarbe 200ms; -o-Übergang: Hintergrundfarbe 200ms; Übergang: Hintergrundfarbe 200ms; } a {@include Hover-Effekt; } .button {@include Hover-Effekt; }
Mixins ermöglichen Ihnen auch, Variablen zu verwenden, um die Werte innerhalb des Mixins zu definieren . Wir könnten das obige Beispiel umschreiben, um uns die Kontrolle über den genauen Zeitpunkt des Übergangs zu geben . Wir möchten, dass Schaltflächen zum Beispiel ein bisschen langsamer werden.
@mixin Hover-Effekt ($ Geschwindigkeit) {-webkit-Übergang: Hintergrundfarbe $ Geschwindigkeit; -moz-transition: Hintergrundfarbe $ Geschwindigkeit; -o-Übergang: Hintergrundfarbe $ Geschwindigkeit; Übergang: Hintergrundfarbe $ Geschwindigkeit; } a {@include Hover-Effekt (200ms); } .button {@include hover-effect (300ms); }
Platzhalter-Selektoren
Platzhalter-Selektoren wurden mit Sass 3.2 eingeführt und haben ein Problem gelöst, das zu einem Aufblähen des generierten CSS-Codes führen kann. Sehen Sie sich diesen Code an, der Fehlermeldungen erzeugt:
.nachricht {font-size: 1.1em; Auffüllen: 11px; Rahmenbreite: 1px; Rand-Stil: fest; } .message-danger {@extend.message; Hintergrund: # C20030; Farbe: #fff; Rahmenfarbe: # A8002A; } .message-success {@extend .message; Hintergrund: # 7EA800; Farbe: #fff; Randfarbe: # 6B8F00; }
Es ist sehr wahrscheinlich, dass die Nachrichtenklasse niemals in unserem HTML-Code verwendet wird: Sie wurde erstellt, um erweitert zu werden und nicht so wie sie ist . Dies verursacht ein bisschen Aufblähen in Ihrem generierten CSS. Um Ihren Code effizienter zu machen, können Sie den Platzhalter-Selektor verwenden, der mit einem Prozentzeichen gekennzeichnet ist:
% Nachricht {font-size: 1.1em; Auffüllen: 11px; Rahmenbreite: 1px; Rand-Stil: fest; } .message-danger {@extend% button; Hintergrund: # C20030; Farbe: #fff; Rahmenfarbe: # A8002A; } .message-success {@extend% button; Hintergrund: # 7EA800; Farbe: #fff; Randfarbe: # 6D9700; }
In diesem Stadium fragen Sie sich vielleicht, was der Unterschied zwischen den Extensions und den Mixins ist. Wenn Sie Platzhalter verwenden, verhalten sie sich wie eine parameterlose Mischung. Das stimmt, aber die Ausgabe in CSS unterscheidet sich. Der Unterschied besteht darin, dass doppelte Regeln dupliziert werden, während Platzhalter dafür sorgen, dass selbe Regeln Selektoren gemeinsam nutzen, was am Ende zu weniger CSS führt.
Operationen
Es ist schwer, hier dem Wortspiel zu widerstehen, aber ich werde vorläufig keine medizinischen Witze machen. Mit Hilfe von Operatoren können Sie in Ihrem CSS-Code etwas rechnen und können sehr hilfreich sein. Das Beispiel im Sass Guide ist perfekt, um dies zu veranschaulichen:
.container {Breite: 100%; } Artikel {float: links; Breite: 600px / 960px * 100%; } beiseite {float: rechts; Breite: 300px / 960px * 100%; }
Das obige Beispiel erstellt ein 960px-basiertes Grid-System mit minimalem Aufwand. Es wird sich gut auf das folgende CSS kompilieren:
.container {Breite: 100%; } Artikel {float: links; Breite: 62, 5%; } beiseite {float: rechts; Breite: 31, 25%; }
Ein großer Nutzen, den ich für Operationen finde, ist das Mischen von Farben. Wenn Sie sich die Erfolgsmeldung Sass oben ansehen, ist nicht klar, dass die Farbe des Hintergrunds und der Grenze eine Art Beziehung zueinander haben. Durch Subtrahieren einer Graustufe können wir die Farbe verdunkeln und die Beziehung sichtbar machen:
$ primary: # 7EA800; .message-success {@extend% button; Hintergrund: $ primary; Farbe: #fff; Rahmenfarbe: $ primary - # 111; }
Je heller die abgezogene Farbe ist, desto dunkler wird die resultierende Farbe. Je heller die hinzugefügte Farbe ist, desto heller ist der resultierende Farbton.
Funktionen
Es gibt eine große Anzahl von Funktionen zu verwenden: Zahlenfunktionen, Zeichenfolgenfunktionen, Listenfunktionen, Farbfunktionen und mehr. Sehen Sie sich die lange Liste in der Entwicklerdokumentation an. Ich schaue mir hier ein Paar an, um Ihnen zu zeigen, wie sie arbeiten.
Die lighten
und darken
kann verwendet werden, um die Helligkeit einer Farbe zu ändern. Dies ist besser als das Subtrahieren von Schattierungen, es macht alles noch modularer und offensichtlicher. Schauen Sie sich unser vorheriges Beispiel mit der Verdunkelungsfunktion an.
$ primary: # 7EA800; .message-success {@extend% button; Hintergrund: $ primary; Farbe: #fff; border-color: verdunkeln ($ primary, 5); }
Das zweite Argument der Funktion ist der erforderliche Verdunkelungsgrad. Alle Funktionen haben Parameter; Werfen Sie einen Blick auf die Dokumentation, um zu sehen, was sie sind! Hier sind ein paar andere selbsterklärende desaturate
: desaturate
, saturate
, invert
, grayscale
.
Die ceil
Funktion gibt, genau wie in PHP, eine Zahl zurück, die auf die nächste ganze Zahl gerundet wird. Dies kann verwendet werden, wenn Spaltenbreiten berechnet werden oder wenn nicht viele Dezimalstellen im endgültigen CSS verwendet werden sollen.
.title {font-size: ceil ($ heading_size * 1.3314); }
Überblick
Die Funktionen in Sass geben uns die Möglichkeit, mit weniger Aufwand besser CSS zu schreiben. Die richtige Verwendung von Mixins, Erweiterungen, Funktionen und Variablen macht unsere Stylesheets wartbarer, lesbarer und einfacher zu schreiben.
Wenn Sie an einem anderen ähnlichen CSS-Präprozessor interessiert sind, empfehle ich, einen Blick auf LESS zu werfen (oder sehen Sie sich unser Anfängerhandbuch an) - der zugrunde liegende Prinzipal ist ähnlich!
10 einzigartige Spielkarten-Designs, die Sie lieber behalten als spielen
Laut Wikipedia gab es Spielkarten seit über 1100 Jahren. Sie haben sich seither erheblich verändert. Verschiedene Decksvarianten wurden erstellt, doch was wir als "normales Kartenspiel" erkennen, hat sich seit einiger Zeit nicht wesentlich verändert. Zumindest könnten Sie das denken! Es gibt ziemlich viele Firmen, die spezielle Plattformen geschaffen haben, die von sonderbar zu schönem zu nützlichem reichen.Wenn
Erstellen Sie Spotify Playlists mit Ihren Freunden in Facebook Messenger
Haben Sie sich schon immer gewünscht, dass Sie mit Ihren Freunden eine Spotify-Playlist erstellen könnten? Wenn Sie Facebook Messenger nutzen, können Sie dies jetzt tun, da Spotify eine Gruppen-Playlist-Funktion für die Chat-App bereitgestellt hat .Die neue Funktion "Gruppenwiedergabelisten", die über die Spotify-Erweiterung von Messenger zugänglich ist, ermöglicht es Ihnen und Ihren Freunden , eine einheitliche Wiedergabeliste zu erstellen . Sobal