„Welche CSS-Präprozessor-Sprache sollte ich wählen?“ ist in letzter Zeit ein heiß diskutiertes Thema. Ich wurde mehrmals persönlich danach gefragt, und eine Online-Debatte scheint alle paar Tage aufzutauchen. Es ist gut, dass sich die Diskussion größtenteils von der Frage, ob Präprozessierung eine gute Idee ist oder nicht, zu der Frage verschoben hat, welche Sprache die beste ist. Lasst uns das angehen.
Wirklich kurze Antwort: Sass
Etwas längere Antwort: Sass ist in vielerlei Hinsicht besser, aber wenn du mit Less glücklich bist, ist das in Ordnung, zumindest tust du dir selbst einen Gefallen, indem du präprozessierst.
Viel längere Antwort: Lies weiter.
Die viel längere Antwort
Die Lernkurve mit Ruby und Kommandozeile und was auch immer
Die einzige Lernkurve ist die Syntax. Sie sollten eine App wie CodeKit, LiveReload oder Mixture verwenden, um Ihre erstellten Dateien zu überwachen und zu kompilieren. Sie müssen keine Ahnung von Ruby oder der Kommandozeile oder was auch immer haben. Vielleicht sollten Sie das, aber Sie müssen es nicht, also ist es hier kein Faktor. Die Tatsache, dass Sass in Ruby und Less in JavaScript ist, ist für die meisten potenziellen Benutzer von geringer Bedeutung.
Gewinner: Niemand
Hilfe mit CSS3
Mit beiden Sprachen können Sie Ihre eigenen Mixins schreiben, um mit Vendor-Präfixen zu helfen. Kein Gewinner dort. Aber wissen Sie, wie Sie nicht zurückgehen und die Präfixe aktualisieren, die Sie in all Ihren Projekten verwenden? (Das tun Sie nicht.) Sie werden auch Ihre handgefertigte Mixin-Datei nicht aktualisieren. (Wahrscheinlich.)
In Sass können Sie Compass verwenden, und Compass **wird** sich selbst auf dem neuesten Stand halten, und somit ist die Präfix-Situation für Sie erledigt. Bourbon ist auch gut. Es wird einige Hin und Her geben, welches dieser Projekte "vor" ist.
In Less gibt es auch einige Mixin-Bibliotheken, die um die beste kämpfen. Sie sehen heute viel besser aus als früher. Trotz ihrer Marketing-Support-Charts glaube ich nicht, dass sie so robust sind wie die Sass-Versionen. Ich habe mir sagen lassen, dass die Sprache Less selbst es nicht zulässt, robustere Bibliotheken darauf aufzubauen. Dazu kommen wir gleich.
In beiden Fällen liegt es an Ihnen, die Präprozessor-Software selbst sowie diese Bibliotheken auf dem neuesten Stand zu halten. Ich finde es generell auch bei Sass einfacher. Zum Beispiel werden Compass-Updates automatisch in CodeKit kommen, oder Sie verwenden ein Gem, das einfach zu aktualisieren ist, während Sie bei Less-Mixins eine Datei selbst manuell aktualisieren müssen.
Gewinner: Knapp Sass
Sprachfähigkeiten: Logik / Schleifen
Less hat die Fähigkeit, „guarded mixins“ zu verwenden. Dies sind Mixins, die nur dann wirksam werden, **wenn** eine bestimmte Bedingung wahr ist. Vielleicht möchten Sie eine Hintergrundfarbe basierend auf der aktuellen Textfarbe in einem Modul festlegen. Wenn die Textfarbe „ziemlich hell“ ist, möchten Sie wahrscheinlich einen dunklen Hintergrund. Wenn sie „ziemlich dunkel“ ist, möchten Sie einen hellen Hintergrund. Sie haben also ein einzelnes Mixin, das in zwei Teile aufgeteilt ist, mit diesen Guards, die sicherstellen, dass nur einer davon wirksam wird.
.set-bg-color (@text-color) when (lightness(@text-color) >= 50%) {
background: black;
}
.set-bg-color (@text-color) when (lightness(@text-color) < 50%) {
background: #ccc;
}
Dann erhalten Sie bei der Verwendung den richtigen Hintergrund
.box-1 {
color: #BADA55;
.set-bg-color(#BADA55);
}
Das ist stark vereinfacht, aber Sie verstehen wahrscheinlich, worum es geht. Sie können damit einige ausgefallene Dinge tun. Less kann auch selbstreferenzierende Rekursion betreiben, bei der ein Mixin sich selbst mit einem aktualisierten Wert aufrufen kann, wodurch eine Schleife entsteht.
.loop (@index) when (@index > 0) {
.myclass {
z-index: @index;
}
// Call itself
.loopingClass(@index - 1);
}
// Stop loop
.loopingClass (0) {}
// Outputs stuff
.loopingClass (10);
Aber dort enden die Logik-/Schleifenfunktionen von Less. Sass hat tatsächliche Logik- und Schleifenoperatoren in der Sprache. Wenn/dann/sonst-Anweisungen, For-Schleifen, While-Schleifen und Each-Schleifen. Keine Tricks, nur richtige Programmierung. Während guarded mixins ein ziemlich cooles, natürliches Konzept sind, geht die Sprachrobustheit an Sass. Diese Sprachrobustheit ist es, die Compass ermöglicht.
Zum Beispiel hat Compass ein Mixin namens background. Es ist so robust, dass Sie ihm fast alles übergeben können, was es ausgeben soll. Bilder, Verläufe und jede Kombination davon, durch Kommas getrennt, und Sie erhalten, was Sie brauchen (inklusive Vendor-Präfixe).
Dieser prägnante und verständliche Code
.bam {
@include background(
image-url("foo.png"),
linear-gradient(top left, #333, #0c0),
radial-gradient(#c00, #fff 100px)
);
}
Wird zu diesem Monster (was leider das ist, was wir brauchen, damit es mit der bestmöglichen Browserunterstützung funktioniert)
.bam {
background: url('/foo.png'), -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #333333), color-stop(100%, #00cc00)), -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #cc0000), color-stop(100%, #ffffff));
background: url('/foo.png'), -webkit-linear-gradient(top left, #333333, #00cc00), -webkit-radial-gradient(#cc0000, #ffffff 100px);
background: url('/foo.png'), -moz-linear-gradient(top left, #333333, #00cc00), -moz-radial-gradient(#cc0000, #ffffff 100px);
background: url('/foo.png'), -o-linear-gradient(top left, #333333, #00cc00), -o-radial-gradient(#cc0000, #ffffff 100px);
background: url('/foo.png'), -ms-linear-gradient(top left, #333333, #00cc00), -ms-radial-gradient(#cc0000, #ffffff 100px);
background: url('/foo.png'), linear-gradient(top left, #333333, #00cc00), radial-gradient(#cc0000, #ffffff 100px);
}
Gewinner: Sass
Webseiten-Nettigkeit
Less hat eine nettere, gebrauchsfähigere Website. Die Sass-Dokumentation ist nicht schlecht. Sie ist vollständig und man findet, was man braucht. Aber wenn es darum geht, die Aufmerksamkeit von Frontend-Leuten zu gewinnen, hat Less die Nase vorn. Ich zweifle nicht daran, dass dies eine große Rolle dabei spielt, dass Less derzeit das Rennen um die Popularität anführt.
Ich weiß, dass die Sass-Website eine große Überarbeitung durchläuft und viele großartige Leute daran arbeiten. Es scheint mir jedoch, dass es sehr langsam vorangeht.
Gewinner: LESS
Das @extend-Konzept
Angenommen, Sie deklarieren eine Klasse mit etwas Styling. Dann möchten Sie eine weitere Klasse, die fast das Gleiche tun soll, nur ein paar zusätzliche Dinge. In Less würden Sie wahrscheinlich
.module-b {
.module-a(); /* Copies everything from .module-a down here */
border: 1px solid red;
}
Das ist im Wesentlichen ein „Include“. Ein Mixin, in beiden Sprachen. Sie könnten ein Include verwenden, um das auch in Sass zu tun, aber Sie sind besser dran, @extend zu verwenden. Mit @extend werden die Stile von .module-a nicht nur nach .mobule-b (was als Ballast betrachtet werden könnte) dupliziert, sondern der Selektor für .module-a wird in den kompilierten CSS zu .module-a, .module-b geändert (was effizienter ist).
.module-a {
/* A bunch of stuff */
}
.module-b {
/* Some unique styling */
@extend .module-a;
}
Kompiliert zu
.module-a, .module-b {
/* A bunch of stuff */
}
.module-b {
/* Some unique styling */
}
Sehen Sie das? Es schreibt Selektoren neu, was viel effizienter ist.
In Less ist jede einzelne Klasse auch ein Mixin, was die Angelegenheiten programmatisch etwas unübersichtlich macht, aber auf den ersten Blick einfacher zu verstehen ist.
Ab Less 1.4 unterstützt es auch extend. Sie können einige Beispiele sehen wenn wir darauf aktualisieren auf CodePen. Es ist ein bisschen schrullig, da es keine Selektoren erweitert, die in der ursprünglichen Klasse verschachtelt sind, es sei denn, Sie verwenden ein zusätzliches all-Schlüsselwort. Die Option, entweder den einen oder den anderen Weg zu gehen, erscheint mir tatsächlich mächtiger, aber ich bin auch vorsichtig bei dem, was unter der Haube vor sich geht.
Sass hat auch die Fähigkeit, „Platzhalter“-Klassen zu erweitern. Im Wesentlichen unsichtbare Klassen im Format %placeholder { }. Dies ist nützlich, um interne Benennungen zu verwenden, die dort sinnvoll sind, aber keine tatsächlichen Klassennamen wären.
Gewinner: Sass
Variablenbehandlung
Less verwendet @, Sass verwendet $. Das Dollarzeichen hat keine inhärente Bedeutung in CSS, während das @-Zeichen dies hat. Es ist für Dinge wie die Deklaration von @keyframes oder Blöcken von @media-Abfragen. Man könnte dies der persönlichen Vorliebe zuordnen und es als keine große Sache betrachten, aber ich denke, der Vorteil liegt bei Sass, das keine stehenden Konzepte verwirrt.
Sass hat jedoch einige Merkwürdigkeiten mit dem Gültigkeitsbereich von Variablen. Wenn Sie eine „globale“ Variable „lokal“ überschreiben, übernimmt die globale Variable den lokalen Wert. Das fühlt sich einfach etwas komisch an.
$color: black;
.scoped {
$color: white;
color: $color;
}
.unscoped {
// LESS = black (global)
// Sass = white (overwritten by local)
color: $color;
}
Ich habe gehört, dass es nützlich sein kann, aber es ist nicht intuitiv, besonders wenn man JavaScript schreibt.
Gewinner: Unentschieden
Arbeiten mit Media Queries
Die Art und Weise, wie die meisten von uns mit @media-Abfragen zu arbeiten begannen, war, Blöcke davon am Ende ihres Haupt-Stylesheets hinzuzufügen. Das funktioniert, führt aber zu einer mentalen Trennung zwischen den ursprünglichen Stilen und den reaktionsfähigen Stilen. Wie
.some-class {
/* Default styling */
}
/* Hundreds of lines of CSS */
@media (max-width: 800px) {
.some-class {
/* Responsive styles */
}
}
Mit Sass oder Less können wir diese Stile durch Verschachtelung zusammenbringen.
.some-class {
/* Default styling */
@media (max-width: 800px) {
/* Responsive styles */
}
}
Mit Sass können Sie es sogar noch besser machen. Es gibt eine wirklich coole „respond-to“-Technik (siehe Code von Chris Eppstein, Ben Schwarz und Jeff Croft) zum Benennen/Verwenden von Breakpoints.
=respond-to($name)
@if $name == small-screen
@media only screen and (min-width: 320px)
@content
@if $name == large-screen
@media only screen and (min-width: 800px)
@content
Dann können Sie sie prägnant und semantisch verwenden
.column
width: 25%
+respond-to(small-screen)
width: 100%
Verschachtelte Media Queries sind eine fantastische Arbeitsweise. Gerüchten zufolge wird Sass 3.3 weitere Funktionen enthalten, um dies noch nützlicher zu machen, einschließlich einer Möglichkeit, extend innerhalb von Media Queries zu verwenden, was derzeit sowohl in Less als auch in Sass unmöglich ist.
Gewinner: Sass
Mathematik
Zum größten Teil ist die Mathematik ähnlich, aber es gibt einige Merkwürdigkeiten bei der Handhabung von Einheiten. Zum Beispiel nimmt Less an, dass die erste verwendete Einheit das ist, was Sie ausgeben möchten, und ignoriert weitere Einheiten.
div {
width: 100px + 2em; // == 102px (weird)
}
In Sass erhalten Sie einen klaren Fehler: Inkompatible Einheiten: ‚em‘ und ‚px‘. Ich schätze, es ist umstritten, ob es besser ist, einen Fehler zu bekommen oder falsch zu liegen, aber persönlich ziehe ich den Fehler vor. Insbesondere wenn Sie mit Variablen und nicht mit direkten Einheiten arbeiten und es schwerer zu finden ist.
Sass lässt Sie auch mathematische Operationen mit „unbekannten“ Einheiten durchführen, was es etwas zukunftssicherer macht, falls eine neue Einheit auftaucht, bevor sie sie aktualisieren können. Less tut dies nicht. Es gibt noch einige weitere seltsame Unterschiede, wie Sass das Multiplizieren von Werten mit Einheiten behandelt, aber das ist esoterisch genug, um es nicht erwähnenswert zu machen.
Gewinner: Knapp Sass
Aktive Entwicklung
| 05/16/12 | 01/12/13 | 06/25/13 | |
|---|---|---|---|
| Anzahl der offenen Probleme bei LESS | 392 | 112 | 142 |
| Anzahl der offenen Probleme bei Sass | 84 | 83 | 110 |
| Ausstehende Pull-Anfragen bei LESS | 86 | 10 | 5 |
| Ausstehende Pull-Anfragen bei Sass | 3 | 7 | 11 |
| Anzahl der Commits im letzten Monat bei LESS | 11 | 84 | 2 |
| Anzahl der Commits im letzten Monat bei Sass | 35 | 14 | 14 |
Keines dieser Dinge ist ein endgültiger Beweis dafür, dass ein Projekt aktiver ist als das andere, aber es ist interessant, sich die Statistiken anzusehen. Soweit ich weiß, arbeiten die Leads beider Sprachen in ihrer knappen Freizeit daran, da beide andere wichtige neue Projekte haben, an denen sie arbeiten.
Less war in letzter Zeit ziemlich aktiv, aber jetzt ist auch Sass viel aktiver geworden, da sich ein Kernmitglied direkt darauf konzentrieren kann.
Gewinner: Unentschieden
Weitere Lektüre
- Chris Eppstein: Sass/LESS Vergleich
- Jeremy Hixon: Eine Einführung in LESS und ein Vergleich mit Sass
- Ken Collins: Zu LESS? Sollten Sie Sass verwenden?
- Johnathan Croom: Sass vs. LESS vs. Stylus: Ein Präprozessor-Shootout
Toller Vergleich für jemanden wie mich, der noch keines von beiden verwendet. Gut zu wissen, in welches ich mich einarbeiten sollte, wenn ich mich irgendwann für den Präprozessor-Weg entscheide.
Großartige Arbeit, Chris. Ich habe mit LESS begonnen und SASS fühlt sich für mich mächtiger an.
Haben Sie Gedanken zu Stylus?
Ich habe Stylus nur sehr wenig benutzt. Ich habe es aus Gründen der Kürze bewusst aus dem Artikel weggelassen und weil ich nicht glaube, dass es im Moment irgendetwas besser macht als seine größeren Brüder. Korrigieren Sie mich, wenn ich falsch liege.
Wo wir gerade von Stylus sprechen – es ist nicht dasselbe wie seine „älteren“ Brüder. Tatsächlich ist es in vielen Bereichen überlegen
1. Es hat diese transparenten Mixins, sodass Sie sie einfach als `box-sizing: border-box` verwenden und alle Präfixe dort für Sie erhalten.
2. Es hat die gleichen Logik-/Schleifenfähigkeiten wie SASS, bietet aber viele Abkürzungen, sodass Sie `width: 100px if foo` usw. schreiben können.
3. Stylus ist in verschachtelten Regeln mit Elterreferenzierung viel flexibler als SASS. In Stylus können Sie `&__element`, `.foo:not(&)` , `ul&` usw. tun. In SASS sind diese Dinge unmöglich, da es `&` nicht einmal in Interpolationen unterstützt.
4. Stylus hat Property-Lookup, was sehr nützlich sein kann.
5. Stylus hat viele andere Funktionen, von denen viele für SASS oder Less nicht verfügbar sind.
Was die Nachteile betrifft, so ist das missverständlichste Problem bei Stylus seine Syntax. Während sie sehr flexibel sein kann, kann sie in einigen Fällen auch einschränkend sein, da sie eine auf Einrückungen basierende Syntax hat.
Die Flexibilität der Sprache wiegt jedoch die Syntaxprobleme auf, daher habe ich mich für Stylus entschieden.
Ich bin immer noch nicht von Stylus überzeugt.
Meine relativ neue Erfahrung mit Stylus war, dass sein Compiler etwas fehlerhaft ist. Manchmal schlug er stillschweigend fehl, manchmal gab er verstümmeltes CSS aus (z. B. Deklarationen als Selektoren) anstatt eines Fehlers.
Persönlich bin ich kein Fan von transparenten Mixins, da ich wissen möchte, welche Teile der Datei native CSS sind und welche von der zusätzlichen Funktionalität des Präprozessors verarbeitet werden.
Ja, der Compiler ist im Moment etwas eigenwillig, aber hey! Stylus ist im Moment nicht so beliebt wie Sass und Less, daher gibt es nicht so viele Entwickler und Fehlerberichterstatter dort. Ich hoffe, seine Entwicklung wird den Compiler in einen stabileren Zustand bringen.
Was die Mixins angeht: Obwohl Sie transparente verwenden können, können Sie sie auch als Funktionen aufrufen, sodass es sich um eine optionale Sache handelt.
Ich mag, wie Sie die Vorteile von @extend in SASS hervorheben, obwohl ich in diesem Fall die Prägnanz von LESS bevorzuge. Ich mag auch die Art und Weise, wie SASS Media Queries zu handhaben beginnt, und ich hoffe, dass LESS bald etwas Ähnliches integrieren wird.
Einer der Gründe, warum ich SASS gemieden habe, ist, dass ich keine Ahnung habe, was Compass ist und warum es mit SASS verbunden ist.
Sobald Sie Compass verwendet haben, werden Sie nicht glauben, wie mächtig es ist und warum Sie es nicht früher verwendet haben! Ich empfehle dringend, es auszuprobieren…
Compass ist im Grunde eine Sammlung von CSS3-Mixins und Helfern. Sie sollten sich ihre Website ansehen, wenn Sie mehr erfahren möchten. Vertrauen Sie mir, die Tatsache, dass SASS Compass hat, ist an sich schon ein Gewinn.
Für diejenigen, die den Artikel nicht noch einmal durchsuchen möchten, um den Link zu finden: http://compass-style.org.
Ich muss zugeben, ich habe mich anfangs für SASS entschieden, weil ich Compass wollte (was ein sehr guter Grund ist!), und ich habe mich seitdem nicht mehr wirklich mit LESS beschäftigt, weil ich SASS bereits eingerichtet hatte. Es ist großartig, einen guten, gut begründeten Vergleich zu sehen.
Ich genieße sehr, wie einfach die Syntax in Stylus im Vergleich zu Sass im CSS ist. Viele der zusätzlichen Dinge wie
@mixinund@includewerden weggelassen.im Vergleich zu
Stylus hat auch ein mächtiges Mixin-Add-on ähnlich wie Compass namens nib.
Letztendlich ist es reine persönliche Vorliebe, aber ich habe Stylus im Laufe der Zeit sehr lieben gelernt.
Wenn Ihnen die SCSS-Syntax für die Deklaration und den Aufruf von Mixins nicht gefällt, können Sie jederzeit die SASS-Syntax verwenden.
Ihr Stylus kann auch noch einfacher werden
Oder viel einfacher (ohne Semikolons!)
*ohne Doppelpunkte, besser gesagt.
Außerdem ist das Debugging in SASS viel einfacher als in LESS
Wie das? Bin nur neugierig. Bevorzugen Sie die Fehlermeldung oder so etwas?
Meint Anas FireSass? https://addons.mozilla.org/en-US/firefox/addon/firesass-for-firebug/
Compass schreibt die Datei und die Zeilennummer in die kompilierte CSS-Datei, sodass Sie sehen können, wo der Stil ursprünglich geschrieben wurde. Das ist das, was FireSass tut, ohne ein weiteres Browser-Plugin ausführen zu müssen.
Schöne Zusammenfassung. Ich entscheide immer noch, welchen Weg ich einschlagen soll.
Einerseits, wenn ich etwas von Ihnen über CSS-Präprozessierung lernen möchte, sollte ich SASS lernen.
Andererseits möchte ich wirklich 320 and up in einem neuen Projekt verwenden, habe aber noch keinen guten SASS-Port gefunden. Weiß jemand hier einen?
Codekit ist übrigens großartig. Danke für den Tipp.
Viel Erfolg bei Ihrem nächsten Abenteuer!
-Jacob
Jina Bolton hat einen SASS-Port von den neuen 320 and Up. https://github.com/jina/Sass320andup
Jina hat SASS/Compass-Unterstützung zu 320 and up hinzugefügt, falls jemand interessiert ist. https://github.com/jina/Sass320andup
Ich warte nur darauf, dass Malarkey den Pull-Request übernimmt.
-J
Ich denke, beide haben noch einen wichtigen Sieg.
Sprites – Sass (via Compass)
Prägnanz – Less (muss keine include, extend usw. definieren)
Ich stimme zu. Die Syntax von Less ist in dieser Hinsicht etwas intuitiver.
Aber es gibt keinen Grund, warum Sie nicht beides lernen sollten. Persönlich verwende ich Sass/Compass. Aber es gibt viele Projekte, die ausschließlich LESS verwenden, wie z. B. Twitter Bootstrap.
Daher denke ich persönlich, dass die beste Option darin besteht, beides zu lernen. Es gibt viele andere Präprozessoren, wie erwähnt, Stylus ist einer davon. Ich habe immer die Haltung eingenommen, zumindest alle Werkzeuge auszuprobieren, die mir zur Verfügung stehen. Das hilft nicht nur, mein Verständnis für verschiedene Syntaxen zu vertiefen, sondern erleichtert auch die Arbeit an anderen Projekten, wenn ich die Syntax bereits kenne, weil ich die Initiative ergriffen habe, sie zu lernen. Dies gilt für alle meine Entwicklungswerkzeuge, nicht nur für CSS-Präprozessoren.
Ich benutze SASS (+Compass) schon eine Weile (2 Monate) – es ist GROSSARTIG!
Es scheint, als ob LESS den Popularitätswettbewerb gewinnt… Das ist nicht unbedingt gut oder schlecht. Aus egoistischen Gründen wünschte ich, Compass/SASS würden auf Augenhöhe mit LESS behandelt und nicht als zweiter Platz wahrgenommen. LESS ist ein großartiger Konkurrent, wenn Sie SASS noch nicht verwendet haben. Aber im Versuch, LESS zu verwenden, habe ich Compass mehr zu schätzen gelernt. Ich würde kein Projekt beginnen, ohne Compass zuerst konfiguriert zu haben.
Ich glaube, dass artikulierte Tutorials, die zeigen, wie man ein Produkt benutzt – besonders wenn es um das Terminal geht –, helfen, die erste Hürde zu überwinden.
Eines meiner wertvollsten und hilfreichsten Video-Tutorials aus der damaligen Zeit weckte mein Interesse, Compass langfristig gegenüber anderen Präprozessoren zu verfolgen. http://wp.me/P28635-1JE
Die anderen großartigen Videos, die ich gesehen habe, waren die Demos von Chris Eppstein und David Kaneda für Sencha Touch. (Abschweifen – ich wünschte, jQTouch würde mehr Hingabe erhalten. Die GUI ist mit Compass/SASS gehaut und sieht super sexy aus. IMO)
Um Compass zu installieren, kopieren/einfügen von 2 Codezeilen von hier http://compass-style.org/install/ in das gruselige Terminal kann jeder bewältigen – besonders ein Frontend-Entwickler. Und wenn Sie Coda verwenden, ist das Terminal direkt da!
Für die Leute, die immer noch Angst vor dem Terminal haben, gibt es GUIs auf dem Markt für Compass und Sass. Eines davon… http://compass.handlino.com/
Probieren Sie es aus!
Ich mache im Moment keine Webentwicklung (habe es aber in der jüngeren Vergangenheit getan), aber ich frage mich, warum man nicht seinen vorverarbeiteten CSS „CSS plus ein kurzes Shell-Skript zur Browserunterstützung-Erweiterung“ hat.
Das heißt, der größte Speicherplatzsparer, den ich in all diesen Beispielen sehe, ist linear-gradient, der zu [-o-linear-gradient, -webkit-linear-gradient, -moz-linear-gradient usw.] erweitert wird. Aber einfaches „linear-gradient“ ist gültiges CSS3, und es ist sehr einfach, ein Skript zu schreiben, das dies in die Varianten erweitert, die in jedem einzelnen Legacy-Browser funktionieren.
Mit einem modernen Browser können Sie schreiben und testen, ohne den Präprozessor ausführen zu müssen. Und es ist einfach, diese Rückwärtskompatibilitäts-Hooks aus Ihrem Skript zu entfernen, wenn Browser nicht mehr verwendet werden.
Sicher, es würde nicht alle diese Probleme lösen, aber ich denke, es wäre eine gute Möglichkeit, 95 % des Weges für 10 % der Komplexität der Lösung zu erreichen. Vielleicht bin ich es nur, aber ich verbringe lieber meine Zeit damit, eine Technologie zu lernen, die von Dauer sein wird (CSS), als Werkzeuge, die heute nützlich sind (LESS, SASS) und meistens temporäre Workarounds.
Ich denke, vielleicht sollten Sie sich einige weitere Vorteile ansehen, warum Sie LESS oder SASS gegenüber reinem CSS verwenden sollten. Für mich ist der Hauptvorteil, dass es einfach viel schneller zu schreiben ist. Ich benutze LESS seit ein paar Jahren (werde vielleicht nach diesem Artikel zu SASS wechseln) und wenn Sie einmal erkannt haben, wie viel Zeit Sie sparen, werden Sie verstehen, warum es gut ist.
SASS und LESS gibt es schon seit ein paar Jahren, sie sind keine wirklichen Workarounds, sondern Werkzeuge zur Produktivitätssteigerung. Das Endergebnis ist dasselbe, kompilierter CSS (oder handgeschrieben), also warum nicht die Abkürzung nehmen?
Nachdem ich angefangen hatte, LESS zu verwenden (eigentlich benutzte ich vorher CSScaffold in PHP), erkannte ich, wie mächtig es war, und ich finde es tatsächlich sinnvoller, es so zu schreiben und nicht reines CSS. Mixins (oder Includes), Verschachtelung und Variablen sind sehr mächtige, aber einfache Konzepte, die CSS meiner Meinung nach nativ handhaben sollte (was vielleicht eines Tages Realität wird). Allein damit können Sie eine Menge Code-Redundanz reduzieren.
John, probieren Sie Prefix-free: http://leaverou.github.com/prefixfree/
Das Vendor-Präfix-Ding ist der einzige überzeugende Grund, den ich je für die Verwendung von Präprozessoren gesehen habe, und Prefix-free löst das.
Das Beispiel, das ich kürzlich verwendet habe, war die Definition einer Gruppe von farbigen Kugeln nur mit CSS. Das können Sie mit einer Kombination aus Eckradius und dezentralen radialen Verläufen tun.
Um die verschiedenen Farben zu definieren, können Sie einen Präprozessor verwenden, um die Verläufe für Sie zu schreiben, indem Sie eine Liste von Basisfarben verwenden, die Sie um einen vordefinierten Betrag abdunkeln.
Ich habe noch nie LESS verwendet, um es zu beurteilen, aber ich liebe SASS.
Großartiger Beitrag, Chris, wie immer!
Ich habe gerade angefangen, mich mit CSS-Präprozessierung zu beschäftigen, daher ist dies eine großartige Einsicht für mich. Nachdem ich das gelesen habe, haben Sie mich überzeugt, mich für SASS zu entscheiden.
SASS vs. LESS? Stylus.
Das beschäftigt alle, danke für den Beitrag, Chris. Es wird interessant sein zu sehen, was auf dem Präprozessor-Vortrag diskutiert wird, der Ende des Monats bei Yelp stattfindet.
Persönlich habe ich mich einfach für LESS entschieden, weil meine erste Begegnung mit Präprozessoren bei der Verwendung von Twitter Bootstrap war.
Zum Thema CSS3-Präfixe, warum nicht einfach -prefix-free.js verwenden und sich keine Sorgen mehr darüber machen?
Für schnelle Demos sind -prefix-free.js (oder die LESS JS-Datei) in Ordnung. Aber Sie sollten sich **niemals** darauf verlassen, dass JavaScript Ihre Präfixe in einer Produktionsumgebung ausgibt. Nicht nur funktioniert es nicht, wenn JS deaktiviert ist, sondern es fügt dem Frontend auch unnötige Verarbeitung hinzu.
Verwenden Sie CodeKit, LiveReload oder einfach „compass watch“…
Danke für deinen Rat, Pat.
Ich habe mir beide angesehen und verwendet und bevorzuge LESS wegen seiner Prägnanz und Benutzerfreundlichkeit: Es ist im Grunde CSS, nur cooler.
Aber jetzt, da ich gehört habe, dass COMPASS wirklich gut ist, würde ich SASS gerne mehr ausprobieren. Aber ich verstehe nicht wirklich, was es ist.
Könnten Sie einen Beitrag darüber schreiben, was COMPASS ist und wie man es am besten verwendet?
Ich habe kürzlich eine Neugestaltung meiner Website begonnen, und obwohl ich im Webdesign ziemlich schlecht bin, mag ich Stylus am meisten.
Keine Semikolons & Klammern sind ein Pluspunkt in meinem Buch.
Nach den Kommentaren oben klingt es so, als hätte Stylus einige sehr überzeugende Dinge zu bieten. Wenn Ihnen jedoch nur das Fehlen von Semikolons und Klammern gefällt, können Sie immer die .sass-Syntax verwenden.
Ich habe Stylus persönlich noch nicht verwendet, daher versuche ich Sie nicht davon abzubringen, es zu verwenden. Tatsächlich werde ich es danach ausprobieren.
Wenn jedoch Prägnanz eines Ihrer größten Anliegen ist, lässt die ursprüngliche Sass-Syntax auch Semikolons und Klammern weg. Sie hat andere prägnante Vorteile, wie die Verwendung von „+“ anstelle von „@include“. Ich bevorzuge definitiv die ursprüngliche Syntax, aber ich habe das Gefühl, dass ich zu den letzten wenigen gehöre.
Persönlich fühlt sich die Verwendung einer Syntax, die eine **Erweiterung** der eigenen CSS-Syntax ist, für mich viel besser an. Das bedeutet, dass nicht alles LESS oder SASS gültiges CSS ist, aber alles CSS gültiges SASS/LESS ist. Es scheint bessere Möglichkeiten zu geben, Ihren Workflow zu optimieren, als nur keine Klammern und Semikolons tippen zu müssen.
Bezüglich des Abschnitts „Hilfe mit CSS3“ könnte es sich lohnen, alle von dem sehr aktiven Bootstrap-Projekt verfügbaren Mixins zu erwähnen.
Nur für den Fall, dass es jemand nicht weiß, Bootstrap basiert vollständig auf LESS.
Man könnte also argumentieren, dass LESS für Leute vielleicht leichter zugänglich ist (Sie haben dies im Dokumentationsteil angedeutet), besonders mit seinen Verbindungen zu Bootstrap – was wieder Leuten hilft, die gerade erst mit dem Webdesign beginnen.
Für uns ist LESS der klare Gewinner. Es ist leichtgewichtig und sehr einfach anzupassen. Wir verwenden dieselben LESS-Mixins in jedem Projekt, was die Entwicklung wirklich beschleunigt. CSS ohne LESS fühlt sich wie das dunkle Zeitalter an.
Sie sollten Sass wirklich ausprobieren – Sie würden einige großartige Vorteile sehen, es verbessert wirklich Ihre Arbeitsweise und die Syntax ergibt mehr Sinn als Less. Less scheint in all den verschiedenen Parametern hinterherzuhinken, obwohl dieser Kommentar 2 Jahre alt ist, denke ich, es lohnt sich, zu Sass zu wechseln! Oder ich bevorzuge SCSS – denn Sass gibt viele Syntaxfehler, wenn man nicht wirklich streng schreibt.
Kommentare sind sehr interessant, die meisten Leute gehen zu SaSS wegen Compass.
In unserem CMS haben wir uns für LESS entschieden
– wegen Twitter Bootstrap
– da JavaScript überall verwendet werden kann (wie jsFiddle, iPad, DropBox, ... für Debugging-/Codierungszwecke) Ruby ist in großen Unternehmen nicht gut bekannt.
Es gibt inzwischen ein paar Sass-Ports von Twitter Bootstrap.
Chris, ich muss sagen, ich stimme Ihren Schlussfolgerungen vollkommen zu. Ich benutze beides schon seit einiger Zeit und SASS fühlt sich solider und reifer an.
Hallo Leute
Kann mir jemand bitte einen detaillierten Artikel verlinken, warum CSS-Präprozessierung eine gute Sache ist? Verlangsamt es die Seite nicht?
Sie können Ihre Sass-, Scss- oder Less-Dateien in ein Stylesheet kompilieren und es wie gewohnt verwenden. Sie müssen nicht zur Laufzeit des Seitenaufrufs kompilieren.
Wenn Sie Sass verwenden, können Sie den Watcher verwenden, um Ihr Sass automatisch zu kompilieren und zu komprimieren, um eine Standard-CSS-Datei zu erstellen, die Sie wie gewohnt einbinden :)
Normalerweise tun Sie das vor der Bereitstellung, sodass es nicht bei jedem Live-Seitenaufruf verarbeitet wird.
Die Verlangsamung kann auftreten, wenn Sie LESS.js (die JS-Version) verwenden, die LESS zur Laufzeit der Seite kompiliert. Aber SASS-Dateien werden während der Entwicklung in CSS umgewandelt. Und LESS kann auch so konfiguriert werden.
Toller Artikel, aber ich bin überrascht, dass Sie keine der Kompilierungsanwendungen angesprochen haben, da es für beide einige gute gibt.
Auch die verschiedenen Sass-Syntaxen. Soweit ich weiß, gibt es zwei, Scss und Sass. Obwohl man sie wahrscheinlich nicht vergleichen kann, denke ich doch, dass aus der Sicht eines Anfängers die Verwirrung zwischen den beiden Syntaxen in Sass verwirrend sein kann. Ich bevorzuge tatsächlich Sass gegenüber Scss, da es keine Klammern gibt! Hurra.
Schöner Artikel. Ich stimme allem zu, obwohl ich diese neuen SASS-Media-Features noch nicht ausprobiert habe – das ist das erste Mal, dass ich von ihnen höre!
Eine Sache, die mich an LESS immer stört, ist, dass es zwar für einen Entwickler sehr einfach ist, einfach die JS-Version hochzuladen und sofort loszulegen, ich aber befürchte, dass sich das Web mit Seiten füllen wird, die von Skripten abhängig sind, um ihre Stile zu interpretieren, da es für einen lernenden Entwickler viel zu einfach ist, es dabei zu belassen.
Aus welchen Gründen auch immer werden die Leute keinen Unterschied zwischen Entwicklung und Produktion machen, und mit SASS, wenn Sie vergessen, es für die Produktion neu zu kompilieren, erhalten Sie nur eine aufgeblähte Datei voller Ihrer Kommentare und Leerzeichen, aber mit LESS erhalten Sie etwas, das bei keinem Browser funktioniert.
Bryan hier. Der Typ hinter CodeKit.
Chris, Ihr Artikel hat mich sicherlich davon überzeugt, Sass in Zukunft genauer anzuschauen! Der einzige Punkt, den Sie meiner Meinung nach verpasst haben, ist GESCHWINDIGKEIT.
Sass (und Compass) sind in Ruby geschrieben, einer gottverdammten langsamen Sprache. Das spielt keine große Rolle, wenn Ihre Stylesheets von angemessener Größe sind. Aber wenn Sie an sehr großen Projekten arbeiten, kann das Kompilieren von Sass viel mehr Zeit in Anspruch nehmen als das Kompilieren von Less oder Stylus. Wenn Sie also zu den Leuten gehören, die ein paar Änderungen vornehmen und dann „Speichern“ drücken, um sie im Browser zu sehen, könnten Sie häufig darauf warten müssen, dass Sass/Compass mithalten.
Es gibt jedoch Hoffnung! Sass wird gerade nach C portiert. Die C-Implementierung ist bis zu 100x (Hinweis: das ist 100 MAL, nicht 100 Prozent) schneller.
Caching macht die Kompilierungsgeschwindigkeit für alles, wofür ich Präprozessoren verwende, größtenteils überflüssig.
Ich bin mit Sass-Caching nicht vertraut, aber wenn es richtig gemacht wird, sollte es in einer Produktionsumgebung immer gecachte Dateien ausliefern.
Auf der RailsConf letzten Monat kündigte Hampton Catlin (der Macher von Haml/Sass) „libsass“ an, eine Sass-Version in C++ geschrieben (https://github.com/hcatlin/libsass), das könnte sich also lohnen. Es sollte viel schneller sein.
Ich bin ein verdammter Idiot, der Kommentare nicht bis zum Ende liest, anscheinend. Meine Entschuldigung :/
Haben Sie weitere Informationen zu diesem C-Port?
Wenn Sie eine ähnliche Denkweise wie ich haben, könnte LESS eine bessere Wahl sein. Ich schreibe in einem einfachen CSS-Stil mit Variablen, grundlegender Mathematik und Mixins nur für Präfixe, als ob die Spezifikationen der von mir emulierten Module endgültig wären. Ich vermeide die Verwendung von verschachtelten Regeln oder syntaktisch unbekannten Dingen. In dieser Situation hat keiner einen Vorteil (Stylus handhabt diesen Stil meiner Erfahrung nach nicht gut, zumindest zum Zeitpunkt des Schreibens) außer den Werkzeugen zu seiner Verarbeitung. Wenn man die verfügbaren Werkzeuge betrachtet, denke ich, hat LESS einen Vorteil, da es mehrere plattformübergreifende Apps gibt, was vor allem eine gute Verfügbarkeit auf Windows bedeutet.
Gibt es einen guten Windows-SASS-Präprozessor wie CodeKit?
Compass.app hat eine Windows-Version. Ich benutze die Mac-Version anstelle von CodeKit.
http://compass.handlino.com/
LiveReload 2, obwohl es für Windows noch in der Entwicklung („pre-alpha“) ist, sieht vielversprechend aus: http://livereload.com/
Es gibt auch Scout: http://mhs.github.com/scout-app/
SASS ist großartig wegen Compass, LESS ist großartig wegen Twitter Bootstrap.
Sass ist auch großartig wegen Susy und Zurb Foundation
http://susy.oddbird.net/
https://github.com/zurb/foundation/tree/3.0-scss
Ich kann nicht wirklich sagen, dass SASS diese sehr große Lücke zu LESS hatte. SASS ist erstaunlich wegen einiger anderer Dinge wie Compass, das es erweitert. Also, im Grunde kann LESS SASS nur in der Kategorie der einfachen Bedienung übertreffen. Ansonsten ist SASS besser.
Ich benutze LESS schon eine Weile, möchte es aber mit SASS vergleichen (und sehen, was es mit diesem Compass-Hype auf sich hat). Das Einzige, was mich davon abhält, ist Ruby. Sicher, ich muss keine Ahnung davon haben, wie Sie sagen, aber ich muss es trotzdem installieren!! Und unter Windows ist das weder einfach noch erwünscht. Warum sollte ich eine ganze Sprache mit allem Drum und Dran installieren müssen, nur um einen kleinen Präcompiler zu benutzen? Geben Sie mir ein eigenständiges Programm! Die Tatsache, dass es das nicht gibt, lässt mich über die Popularität von SASS außerhalb der schwindenden Ruby-Community wundern.
Ruby zu installieren ist viel einfacher als Sie denken. Unter Windows müssen Sie nur den Ruby-Installer von http://rubyinstaller.org/ herunterladen und installieren. Der gesamte Prozess der Installation von Ruby, Sass und Compass dauert etwa 10 Minuten und Sie müssen die Ruby-Sprache nicht kennen. übrigens ist Ruby gar nicht so furchterregend ;)
Es ist erwähnenswert, dass LESS kein Ruby benötigt, was für einige ein signifikanter Faktor sein könnte. Ich persönlich bevorzuge es, ein LESS-Projekt mit lessphp in 5 Minuten einzurichten, ohne mich mit Gems usw. herumschlagen zu müssen (die ich, ehrlich gesagt, noch nicht richtig gelernt habe. Aber Zeit ist Geld und so).
Haben Sie Stylus ausprobiert? Es ist fast so mächtig wie Sass und auf NodeJS aufgebaut.
Schöne Zusammenfassung! Als Sass-Fan freue ich mich, dass wir gewonnen haben, obwohl es keine Überraschung war.
Aber um LESS etwas Anerkennung zu geben, wurde Media Bubbling tatsächlich eingeführt kurz nachdem es in Sass eingeführt wurde.
LESS ist im Vergleich zu Sass definitiv unterlegen, aber Stylus ist ein würdiger Konkurrent. Es hat fast alle Funktionen von Sass, soweit ich mich erinnere, es begann als ein JS-Zweig von Sass, aber es enthält einige wirklich einzigartige Syntaxfunktionen, die es Ihnen ermöglichen, Satzzeichen nach Belieben wegzulassen.
Sass mit benutzerdefinierten Funktionen gewinnt meiner Meinung nach bei der Mathematik weit die Nase vorn. Die Möglichkeit, benutzerdefinierte Funktionen zu erstellen, ermöglicht es Ihnen, die mathematischen Fähigkeiten erheblich zu erweitern. Benutzerdefinierte Funktionen sind unglaublich beim Aufbau von Grid-Logik oder beim Erstellen von benutzerdefinierten Rechnern.
Bei Variablen ermöglichen die Listenfunktionen in Sass, dass Listen im Wesentlichen als Array von Variablen fungieren. Mehrdimensionale Listen können ebenfalls erstellt und verwendet werden, indem Leerzeichen oder Kommas verwendet werden. Dies stößt zwar an die Grenzen, aber diese Funktionalität kann sich in einigen Funktionen als sehr nützlich erweisen. Ich habe Variablen mit Listen als Speicher verwendet, um Berechnungen für die Verwendung in komplexen Funktionen zu speichern.
Die tiefen Bereiche von Sass werden ziemlich tief. Unzählige großartige Funktionen und Sprachfähigkeiten, die Sie nutzen können.
Eine wichtige Überlegung, die in diesem Vergleich fehlt, ist die Leichtigkeit, mit der beide Tools in Continuous Integration und automatisierte Build-Prozesse integriert werden können. Bis Sass nach C portiert ist, ist LESS der klare Gewinner, da es out-of-the-box mit reinem JavaScript, Node.js und Java (über Rhino) funktioniert und nach PHP und einige andere Sprachen portiert wurde. Sass‘ aktuelle Abhängigkeit von Ruby ist für viele Entwickler eine ernste Achillesferse.
Ich stimme zu, dass die Abhängigkeit von Ruby abschreckend ist. Ich benutze fire.app von Handlino (http://handlino.com/), um die Ruby-Sachen über GUI zu handhaben, aber es wäre schön, SASS auf meinem Staging-Server bearbeiten zu können (unterstützt SASS nicht über Ruby, da es ein altes PowerPC Mac ist). Es gab einen alten PHP-Port in Arbeit, aber soweit ich weiß, wurde er nicht auf dem neuesten Stand gehalten.
Ich habe mich noch nicht mit CI oder solchen Systemen beschäftigt, aber sind CSS-Dateien von LESS/SASS nicht schon während der Entwicklung kompiliert worden, lange bevor sie in irgendeinen automatisierten Test-/Build-/Deployment-Prozess gelangen?
müssen Sie lange Build-Prozesse abwarten, nur um eine Schriftfarbe zu ändern? Erscheint mir mühsam :|
Jetzt überlege ich, warum ich LESS (und liebe) statt SASS benutze.
Hier ist, was mir in den Sinn kommt
Einrichtung
Weniger einzurichten dauert etwa 15 Sekunden. Benennen Sie einfach Ihre .css-Dateien in .less-Dateien um. Schön für alte Seiten.
Es funktioniert leicht in PHP oder was auch immer Sie wollen.
Sagen wir, sobald Sie es benutzen, können Sie nicht mehr aufhören.
Auch ein Programm wie Codekit kann Ihr Leben erheblich optimieren. Wirklich sehr.
Syntax
Mit Less muss man nichts lernen. Um eine Funktion zu erstellen, muss man nur eine Klasse deklarieren. Das ist schon ziemlich cool.
Es gibt bereits viele Mixins da draußen (eins für alle: less elements)
Dokumentation
Habe ich schon gesagt, dass Sie keine Kenntnisse benötigen, um LESS zu benutzen? Nun, falls Sie es brauchen, ist die Less-Dokumentation bereits das Beste, was Sie haben können.
Ausgezeichneter Artikel, danke für das Teilen.
Gibt es eine Möglichkeit, die SASS-Syntax mit einem PHP-Präprozessor zu verwenden?
Ich dachte immer, es sei schwierig, SASS unter Windows zu installieren… Ich weiß nicht, woher ich diese Idee habe. Es hat mich weniger als fünf Minuten gekostet, Ruby herunterzuladen, zu installieren und SASS zum Laufen zu bringen.
Es sieht großartig aus, vielleicht ist es an der Zeit, es endlich zu benutzen.
Vielen Dank für den großartigen Artikel!
Warum keine Erwähnung von Bootstrap? Ist Compass so viel besser?
Äpfel und Orangen, fürchte ich.
Bootstrap ist ein Framework, Compass ist ein Meta-Framework. Das bedeutet im Grunde, dass Compass ein Framework zum Erstellen von Frameworks ist. Zum Beispiel gibt es zahlreiche Compass-Forks von Twitter Bootstrap
Bootstrap ist wirklich nur ein weiteres Style-Framework wie Zurb Foundation und Blueprint. Diese sind, wie Chris sagte, Äpfel und Orangen.
Ausgezeichneter Beitrag! Ich würde auch gerne eine Ihrer Screencasts zu Compass sehen.
Hallo Chris
Sie haben definitiv einen wichtigen Punkt verpasst. Das ist der Einstieg in eines von beiden. Für SASS benötigen Sie Ruby und alle Arten von Installationen, aber bei LESS handelt es sich um einen JavaScript-Dateieinbindung, an die jeder gewöhnt ist, wenn er Plugins verwendet. Ich habe keines von beiden benutzt, aber ich werde mit LESS beginnen (besonders seit ich jeden Tag auf OSX und Win entwickle). Ich bin sicher, dass dies für viele andere eine wichtige Überlegung ist.
Nur für den Fall, dass Sie es wissen: Ich habe nie Ruby installiert oder die Kommandozeile zur Arbeit mit Präprozessoren verwendet. Ja, SASS ist von Ruby abhängig, aber das ist für mich völlig transparent, da ich eine App benutze, um damit umzugehen.
Und noch ein schneller Punkt: **Bitte** nicht LESS verwenden, indem es tatsächlich über <script> auf Ihre Seite eingebunden wird. Das mag für super schnelle Tests in Ordnung sein, aber das wäre ein erheblicher Performance-Nachteil. Lokal kompilieren, reguläres CSS auf Ihrer Seite einbinden.
Halt, Kumpel, du kannst nicht einfach jedem erzählen, er solle "lokal" kompilieren, z. B. auf seinem Entwicklungsrechner mit CodeKit. Das ist nicht immer eine Option. Bei größeren Projekten mit größeren Teams ist die Wahrscheinlichkeit sehr hoch, dass die Pre-CSS-Quelldateien versioniert und Teil eines automatisierten Build-Prozesses in einem CI (Continuous Integration) Workflow sind. Es kann schwierig, unmöglich oder einfach unerwünscht sein, Ruby als Abhängigkeit in den Build-Prozess einzubinden. LESS hat derzeit mehr Optionen für die Integration in eine größere Vielfalt von Umgebungen. Das macht Sass in bestimmten Situationen tatsächlich zu einem Nogo, zumindest bis es brauchbare Ports nach C, Java usw. gibt.
Lokal kompilieren, ein Build-Prozess-Ding verwenden, einen Post-Commit-Hook verwenden, sich etwas Neues Fantastisches ausdenken. Egal. Ich sage, binden Sie less.js nicht in den Kopf Ihrer bereitgestellten Website ein und verlinken Sie style.less-Dateien und fertig. Das muss diese riesige Abhängigkeit laden, den ganzen Code herunterziehen, verarbeiten und Dateien neu injizieren. Es wird Flackern von ungestylten Elementen geben, es ist unnötig langsam. Das ist der allgemeine Punkt.
Tatsächlich ist die Leistung mit eingebettetem LESS JS nicht so schlecht, wie manche behaupten. Wir haben es mit Seitenladezeiten unter einer Sekunde genutzt.
Wie unterscheidet sich das lokale Kompilieren einer CSS-Datei und das Hochladen auf einen Server vom selbst Schreiben einer CSS-Datei und dem Hochladen auf einen Server?
Zusammenarbeit ist der Unterschied im Workflow. LESS gewinnt hier eindeutig, wie die einfache Einbindung seines Workflows in die WordPress-Verwaltung zeigt...
Lokale Entwicklung, Demos und schnelle Prototypen ja... aber Live-Websites? Kein gutes Zeichen.....
Sich darauf zu verlassen, dass JS Ihre CSS-Stile lädt, ist schlecht, egal wie Sie es betrachten...... Ich bin überrascht, wie viele Leute das als gültige Methode zur Bereitstellung von CSS betrachten....
Ich spreche nicht von Leuten, die lokal kompilieren und ihr CSS auf den Produktionsserver hochladen, sondern von denen, die sich auf less.js verlassen, um ihr CSS live zu verarbeiten....
Ich persönlich finde, dass die Tatsache, dass ich live auf dem Server arbeiten, LESS-Dateien per FTP bearbeiten und sie dann mit lessphp automatisch minimieren, komprimieren und cachen lassen kann, viel überzeugender ist, als eine Offline-Anwendung zu haben, die die Kompilierung für mich durchführt und einen weiteren Schritt im Prozess hinzufügt. Der lessphp-Weg bedeutet, dass sich mein Workflow seit den Tagen von reinem CSS nicht geändert hat, mit der Ausnahme, dass ich tatsächlich die Funktionen von LESS nutze.
Ich habe ein neues Projekt mit der Absicht gestartet, einen Präprozessor zu verwenden. Ich begann zu denken, dass LESS der richtige Weg sein könnte, aber der Zeitgeist scheint eher in Richtung SASS zu tendieren, mit Artikeln wie diesem und dem ALA-Artikel. Wie Chris erwähnte, wenn man lokal kompiliert, bin ich mir nicht sicher, wie Ruby eine Rolle bei der Entscheidung spielt.
Das geht ein wenig über den Rahmen dieses Artikels hinaus, aber jetzt, wo wir die Möglichkeit haben, mit Logik und Variablen in CSS zu arbeiten, hat jemand Vorschläge zum Debuggen? Mit reinem CSS kann man den Web-Inspektor verwenden und die genaue Codezeile sehen, die das Problem verursacht (mehr oder weniger). Jetzt schauen wir uns nur die nachbearbeitete CSS-Datei an, die das Ergebnis von Logik, Variablen, Mixins usw. sein könnte. Irgendwelche Vorschläge, wie man rückwärts arbeitet?
Hat jemand Scout ausprobiert (http://mhs.github.com/scout-app/)? Die Idee, die Befehlszeile benutzen zu müssen, begeistert mich nicht... Gibt es andere Apps wie diese, die ihr verwendet?
Toller Beitrag, Chris! Ich bin ein Fan von SASS. Ich habe die neue Alpha-Version installiert und ein paar Tests mit verschachtelten Media Queries für ein bestimmtes Element durchgeführt. Das einzige, was mir nicht gefällt, ist, dass immer noch eine Abfrage für jedes einzelne Element ausgegeben wird. Es wäre großartig, wenn sie alle Abfragen bei der Komprimierung gruppieren könnten.
+99999999 Milliarden. Ich will das wirklich!
Ich bin in letzter Zeit ein Fan von Bourbon gegenüber Compass geworden
http://thoughtbot.com/bourbon/
Fantastische Dokumentation, großartige Add-ons, lesbarer Quellcode und nichts als Erweiterungen. Compass versucht, meiner Meinung nach zu viel zu tun und zu sein. Bourbon möchte nur helfen, mein SCSS/SASS zu erweitern. Und es ist in SCSS geschrieben, wohin sich die SASS-Leute bewegten.
In Ihrem Abschnitt "Variable Handling" erwähnen Sie (bezüglich SASS's Überschreibung globaler Variablen):
SASS reagiert genauso wie JS
natürlich haben wir in JS die Möglichkeit, den Geltungsbereich einer Variablen mit
var-Anweisungen zu deklarieren, aber ich glaube nicht, dass SASS für JS-Programmierer weniger intuitiv wäreIch habe kürzlich einen ähnlichen Artikel geschrieben, der zu ähnlichen Schlussfolgerungen kam, aber Stylus mit einbezogen hat, was meiner Meinung nach ein sehr würdiger Kandidat ist. Würde mich über die Meinung der Leute zu Stylus freuen.
Ich habe auch Stylus vermisst, da ich ein Sass-Nutzer bin und es ausprobieren möchte. Das ist ein interessanter Artikel, den Sie über die drei verfasst haben.
Diskussion auch über: http://news.ycombinator.com/item?id=3985278
Ah, ich suche schon ewig nach so etwas, wusste aber nie, wonach ich eigentlich suchen sollte! Danke für die tolle Erklärung und Beispiele (wie immer).
Eine schnelle Frage: Haben Sie
#BADA55absichtlich für "bad ass" verwendet oder war das nur ein unglaublich genialer Zufall?Ich glaube, Paul Irish hat das angefangen... manche Leute haben einfach zu viel Freizeit ;)
Chris, ich verwende LESS in einem riesigen Projekt und eine Ihrer Aussagen hat mich beunruhigt: "(...) verwenden Sie LESS nicht über die Einbindung auf Ihrer Seite über <script>. Das mag für superschnelle Tests in Ordnung sein, aber das wäre ein erheblicher Performance-Haken. Kompilieren Sie lokal, binden Sie normales CSS auf Ihrer Seite ein." Tatsächlich verwende ich auch eine Fallback-CSS-Datei im
<noscript>-Tag, sodass, wenn kein JavaScript vorhanden ist, mein Layout erhalten bleibt. Ist etwas falsch an diesem Ansatz? Vielen Dank im Voraus.Holen Sie sich CodeKit (20 $) oder LESS.app (KOSTENLOS)
http://incident57.com/less/
Richten Sie Ihre Website als Überwachungsordner ein, und wann immer Sie Ihre .less-Datei speichern, kompiliert die App sie lokal im Hintergrund in eine .css-Datei. Dann können Sie Ihre kompilierte (& minimierte) CSS-Datei im Head referenzieren, ohne sich beim Ausliefern der Seite um einen JS- oder PHP-Parser kümmern zu müssen.
@ian.pvd Ich bin ein Windows-Benutzer. Schade, ich weiß (oder nicht :) Aber trotzdem danke!
Edson,
Ich bin auch ein Windows-Entwickler und war mit WinLess zufrieden. Ein Nachteil ist, dass es bei der Komprimierung beim Kompilieren von .css keine Zeilenumbrüche zwischen den Stilregeln entfernt, während LESS.app dies tut.
Scout App ist eine kostenlose GUI für Compass/Sass, die sowohl unter Windows als auch unter Mac läuft.
Für die serverseitige Kompilierung, wenn Sie PHP verwenden, versuchen Sie lessphp – leafo.net/lessphp, oder Sie könnten node.js zur Kompilierung verwenden.
Ian MacIntosh danke für den WinLess-Tipp! Ich teste ihn gerade. Bisher so gut...
Nachdem ich vor ein paar Monaten von den beiden gelesen hatte (und Code Kit entdeckt hatte), traf ich die Entscheidung, von nun an mit LESS zu entwickeln. Meine Entscheidung basierte auf (in aufsteigender Reihenfolge der Wichtigkeit) dem guten Aussehen der LESS-Website und der einfacheren LESS-Syntax. Mein Hauptgrund für die Wahl von LESS war, dass LESS gültiges CSS war und ich einfach die Erweiterung meiner "styles.css"-Dateien in ".less" ändern und loslegen konnte. Alles, was zuvor als Langform in CSS gemacht wurde, konnte nach Belieben in ein Mixin integriert werden, und ich hatte die Freiheit, Verschachtelung und Variablen zu verwenden.
Ich weiß, dass SCSS auch gültiges CSS ist, aber es scheint, dass alle angeblichen Vorteile aus der Verwendung von SASS+Compass mit seiner seltsamen Einrückungssyntax und all diesen @imports für Muster stammen. Während die Abhängigkeit von der Einrückung zur Deklaration von Attributen mich nervös macht, ist das Hauptproblem, dass ich definitiv nicht alle meine vorhandenen CSS durchgehen und in SASS konvertieren möchte, besonders wenn es bei der Fortsetzung bestehender Projekte mit LESS nur einen Compiler wie CodeKit und die Änderung der Dateierweiterung erfordert.
Wenn es darum geht, das, was ich schreibe, zu vereinfachen, während ich mich auf das Erscheinungsbild einer Website konzentriere (und nicht auf Präfixe), ist LESS leistungsfähig genug und erfordert keine Lernkurve und keinen Aufwand für die Umstellung. Compass sieht nicht einfach aus, und SASS sieht aus, als müsste ich ändern, was ich bereits tue, um es zu verwenden. Verpasse ich etwas? Von hier aus sieht es nicht so aus, als würden die Vorteile von SASS die Investition überwiegen.
Ich gebe jedoch zu, dass die $ vs @ Variablendeklaration seltsam ist.
Äh, man kann Compass mit jeder SASS-Syntax verwenden.
Auch muss dieser Artikel Susy als eines der besten Plugins für Media-Query-Arbeiten erwähnen.
Warum beziehen sich Vergleiche immer auf LESS vs SASS? Wenn SCSS und SASS dasselbe und gleich leistungsfähig sind, aber die unterschiedlichen Namen eine Syntax bezeichnen, die gültiges CSS ist, und eine andere nicht, hätte SCSS dann einen erheblichen Vorteil gegenüber SASS, wenn es darum geht, es in bestehende Projekte zu integrieren?
Stylus auch für mich.
Frage ich mich, ob die Tatsache, dass Twitter Bootstrap in Less geschrieben ist, etwas bedeutet? Könnte das zu einer Dominanz des Präkompilierers führen?
Obwohl es viele Gründe gibt, warum ich gerne LESS verwende, ist der Teil, der mich in diesem Artikel wirklich stört, dieser:
Stellt sich heraus, dass CodeKit nur für Mac ist, also ist es für uns auf Windows oder Linux nicht sehr nützlich. LESS bietet eine Vielzahl einfach zu bedienender Compiler wie SimpLESS, Crunch oder sogar lessphp (siehe Blogbeitrag, wie ich mein LESS automatisch kompiliere, wenn ich für WordPress entwickle). Ich habe nicht lange nachgesehen, aber als ich anfing, einen Präprozessor zu verwenden, gab es einfach nichts so Einfaches für SASS. Hat sich das geändert? Kann mir jemand gute Werkzeuge nennen, die keine Ruby-Installation unter Windows und Linux erfordern?
http://winless.org/ LESS-Kompilierung für Windows... Ich bin mir bei Linux nicht sicher...
Es scheint eine gewisse Mac-Voreingenommenheit in vielen Webdesign-Blogs zu geben... lustig angesichts der Marktanteilszahlen unserer Zielmärkte...
SimpLess (http://wearekiss.com/simpless) funktioniert auf Mac und Windows und auch mit dem Quellcode ;)
Auch, wenn Sie die SASS-Dokumentation einschüchternd finden, gefällt Ihnen vielleicht Better Sass Docs, eine reaktionsschnelle Methode, um die SASS-Referenz zu durchsuchen: http://www.kaelig.fr/bettersassdocs/
Mich interessiert nur, ob Sie sich die CSS4-Spezifikation angesehen haben...
http://www.w3.org/TR/selectors4/#subject
Wenn dies erfolgreich ist, wird das `$` zu einem Elternselektor. Meiner Meinung nach gewinnt LESS dann auf der Variablenseite, da es sehr unübersichtlich werden könnte, Variablen zu deklarieren und was gemeinsame Selektoren mit sehr ähnlicher Syntax sein könnten. Mental bevorzuge ich das Teilen von `@` unter Konzepten.
Aber die Spezifikation könnte sich immer ändern und mein Punkt wäre dann gegenstandslos...
Für mich ist das Wichtigste, was ein Präprozessor tut, dass er mich weniger tippen lässt.
Und dafür ist nichts besser als Stylus.
Schauen Sie, wie schön es ist
bw = 20px
#randomdiv
border solid bw #foo
border-radius bw-4
Also bin ich nicht der Einzige, der denkt, LESS sei beliebter, weil es eine schöne Homepage hat?
Sie haben Recht, die aktuelle Website kann Leute von Sass abhalten.
Bedenken Sie jedoch, dass eine vollständige Neugestaltung der Sass-Website im Gange ist. Sie kennen vielleicht den Designer hinter der zukünftigen Website, es ist Jina Bolton. Sie ist sehr talentiert und ich bin sicher, dass sie dafür sorgen wird, dass die Leute keine anderen Präprozessoren wegen eines Homepage-Problems wählen.
Der Abschnitt "Active Develop" in diesem Artikel erzählt eine wichtige Geschichte.
Von Github
„Leute haben viele Probleme behoben, manchmal vor Jahren. Schauen Sie sich eine der 74 offenen Pull-Anfragen ohne Antwort an. Zum Beispiel hat dieses Problem hier viele Duplikate, die bis zu 2 Jahre zurückreichen (wie #324 #71). Hier ist eine Pull-Anfrage, die dieses Problem ziemlich einfach behoben hätte. Der Kommentator bat um Feedback, stieß auf Schweigen und gab schließlich auf.
Ich und einige andere haben versucht, Cloudhead dazu zu bringen, das GIT-Repository zu öffnen, damit wir bei der Problembehandlung helfen können (Duplikate schließen, Pull-Anfragen zusammenführen, die einfachere Probleme beheben usw.), aber wir kamen nicht sehr weit.
Ich denke, das bekannteste LESS-basierte Projekt ist wahrscheinlich Bootstrap. Wenn man sich den Bootstrap-Code ansieht, wird deutlich, dass Compass/Sass die bessere Wahl ist. Besonders deutlich wird dies beim Vergleich von icons.less, das CSS für das Icon-Sprite in Bootstrap ist, mit der Art und Weise, wie Sie Sprites in Compass erstellen. Zwei Codezeilen in Compass erledigen, was Sie mit Bootstrap in über 120 Zeilen (?) mit LESS tun müssen.
Und wie Sie in Bootstrap sehen können, definieren sie auch viele Mixins, die bereits in Compass definiert sind, sodass Bootstrap hier wirklich das Rad neu erfindet. Sicher, Mixins sind reizend, aber mit Compass sind die meisten, die Sie brauchen, bereits vorab geschrieben.
Compass ist wie eine vordefinierte Bibliothek von CSS-Mustern.
Und die Angst der Leute vor Ruby ist lustig. OSX wird mit Ruby ausgeliefert. Keine Installation notwendig. (Was ist mit Windows? :)
Und habe ich erwähnt, dass Sass auch LESS kompilieren kann? So können Sie Bootstrap problemlos in Ihre Sass-Projekte integrieren ;)
Ein kleiner Vergleich...
Bootstrap (LESS) Sprite, ~150 Zeilen: https://github.com/twitter/bootstrap/blob/master/less/sprites.less
Im Vergleich dazu würde in Compass die gleiche Sprite-Datei aus zwei Zeilen bestehen
Und Compass erstellt Ihr Sprite auch automatisch, aus der Sammlung der Bilder, die Sie im Ordner "my-icons" bereitstellen. Es wird auch die Dateigröße optimieren, wenn dafür Platz ist.
Sie können auch die Größe Ihrer Sprites bei der Verwendung in Ihrem CSS-Code referenzieren, so dass zum Beispiel, wenn ich möchte, dass mein englischer Button genau die gleiche Größe wie mein englischsprachiges Icon hat, ich zum Beispiel Folgendes tun kann
HTML
CSS
(Bitte beachten Sie, dass dies Compass-Code ist, keine von mir selbst geschriebene Mixin)
Was Folgendes ergeben würde
Nicht die automatische Berechnung der Hintergrundposition, der automatische Textaustausch und die Verwendung der von Compass generierten Sprite-Datei.
Größen können auch manuell referenziert werden
CSS
Extremer Zeitsparer.
http://compass-style.org/help/tutorials/spriting/
Es gibt tonnenweise LESS-Repos, die vordefinierte Mixins für alle möglichen Dinge enthalten, wie CSS-Transforms usw. Sie erledigen nicht das automatische Spriting, das Compass tut, was ein Deal-Breaker sein mag, aber es ist nicht so, dass es keine Ressourcen gäbe, um ein Vanilla-LESS-Projekt zu ergänzen.
Aber mit Compass erhalten Sie eine vollständige Ein-Zeilen-Installation einer gründlich getesteten Sammlung von Köstlichkeiten, mit einer großartigen Online-Dokumentation. Alles an einem Ort.
Ich habe gerade erst angefangen, den Sprite-Teil zu verwenden. Es ist eines dieser Dinge, von denen man nicht weiß, wie man es früher geschafft hat :)
Laurence: Genau darum geht es auch: Es gibt tonnenweise LESS-Ressourcen wie Bootstrap, aber die meisten davon erfinden das Rad auf irgendeine Weise neu, z. B. wenn sie etwas so Grundlegendes wie einen Clearfix-Mixin definieren.
Schauen Sie sich zum Beispiel die Bootstrap-Mixin-Datei an. Viele dieser geschriebenen Mixins sind Ihre durchschnittliche Brot-und-Butter, und viele sind bereits in Compass. Ein Paradebeispiel für das Neuerfinden von Rädern und Wiederholung.
Das Hinzufügen einer vordefinierten Mixin-Sammlung wie Compass erhöht auch nicht das Projektgewicht. Ein Mixin wird nur hinzugefügt, wenn Sie es tatsächlich verwenden.
Ich habe mich vor ein paar Wochen für Sass/Compass entschieden – es ist großartig und es gibt wirklich kein Zurück mehr. Nun zur nächsten Frage:
Was ist das beste UI-Komponentenpaket?
Wir können das Web nach schönen Mixins oder Dingen wie "fancy-buttons" durchsuchen und/oder unsere eigenen erstellen – aber warum?
Ich habe mich hauptsächlich für Bootstrap wegen all seiner Komponenten entschieden, aber es wird mühsam, seine Partial-Dateien zu bearbeiten, wenn ich muss. Und dann mache ich mir Sorgen, ob meine Bearbeitungen Probleme mit anderen abhängigen Komponenten verursachen, wenn ich sie in Zukunft brauche.
Und neue Grid-Designs wie Suzy von den oddbird.net-Brüdern werden den Platz von Sass-Compass-Suzys von nun an sichern...
Während Suzy nett und gut ist, verwendet sie Spalten mit fester Breite und ist damit meiner Meinung nach eher ein "adaptives" Grid als ein "responsives". Aber trotzdem schön!
Susy IST ein flüssiges Grid-System. Sie müssen keine maximale Breite in Pixeln festlegen, Sie können sie einfach überschreiben und max-width: 100% setzen.
Sie haben Recht: Spaltenbreiten können auch in Prozent angegeben werden. Ich nehme meine Worte zurück.
Wenn Sie mit der Verwendung eines dieser Präprozessoren beginnen möchten, einschließlich Stylus, könnte eine Web-App namens Least (http://toki-woki.net/p/least/) Ihnen beim Einstieg helfen.
Fügen Sie Ihr rohes CSS im linken Bereich ein, wählen Sie Ihre Ausgabe-Sprache (Präprozessor) und die Art der erforderlichen Einrückung und klicken Sie auf "Konvertieren". Ganz einfach.
Der Entwickler von Least, @tokiwoki, nennt es ein Fünf-Stunden-Projekt. Alles, was ich sagen kann, ist: Genial!
Ich bin mir nicht sicher, wovor die "Angst" vor dem Terminal bei Ihnen liegt, aber buchstäblich gibt es nur ein paar Befehle. Sie müssen keine 20-Dollar-App kaufen, um Ihr CSS zu kompilieren...
sudo gem install sass --pre
sudo gem install compass
Gehen Sie zu Ihrem Ordner.
compass init
Erstellt alles, was Sie für Compass benötigen.
compass watch
Kompiliert Ihr CSS im Hintergrund.
Und fertig. Ich bin mir nicht sicher, wofür Sie eine externe App verwenden. Zugegeben, CodeKit tut mehr als nur Ihr SASS zu kompilieren.
Ehrlich gesagt, ich fand das Terminal nicht so beängstigend, als ich mit Linux gearbeitet habe, aber die Windows-Eingabeaufforderung ist nichts, was ich genieße. Ich kann LESS auch so einrichten, dass ich keine zusätzliche App oder das Terminal überhaupt verwenden muss.
CodeKit lädt Ihren Browser automatisch neu, mit Adobe Shadow können Sie auch mehrere andere Geräte zum entsprechenden Neuladen bringen. Es minimiert und kombiniert auch JS und Coffeescript und führt es durch JSHint und JSLint, was sich oft als zeiteffizient erweist, mit seinen Warnungen :)
Mein Problem mit SASS ist die Einrichtung. Mein Arbeitscomputer läuft noch unter 10.5 – also konnte ich keine Gems aktualisieren, weil Ruby veraltet war. Als ich Ruby aktualisieren wollte, brauchte ich RVM. Als ich RVM über Homebrew installieren wollte, sagte es, Bash sei veraltet. LESS wurde in ein paar Minuten installiert und lief.
Ich wollte mich nach dem Artikel und den Kommentaren für SASS entscheiden, aber mein Arbeitscomputer läuft auch unter 10.5, und das klingt nach einem Killer. Möglicherweise muss ich warten, bis ich das Betriebssystem oder den Computer aufgerüstet habe.
Ich dachte, ich würde das trotzdem mal ausprobieren, nur um zu sehen, wie schwer es ist, alles zu aktualisieren. Ich habe jetzt eine Stunde meines Lebens verschwendet und bin noch lange nicht mit der Installation von SASS fertig. Schade, aber das war's von mir.
Ich werde stattdessen LESS ausprobieren.
Entschuldigung, dass ich mit mir selbst spreche. Ignorieren Sie mich einfach.
Ich probiere die Scout-App aus, und bisher scheint sie zu funktionieren. Viel einfacher, als sich mit dem ganzen Aufwand des Aktualisierens auf einer veralteten OS X-Version zu beschäftigen.
Ausgezeichneter Vergleich.
Eine zusätzliche Sache, die ich bei der Arbeit mit LESS von Zeit zu Zeit umständlich fand, ist die klassenähnliche Einbindung.
Wo SASS hat die
LESS verwendet die leicht fehlerhafte
Das Problem mit LESS ist, wenn Ihr Mixin "arrow" genannt wird und der Selektor ebenfalls .arrow genannt wird, was dazu führt, dass LESS einfach einen Kompilierungsfehler hat und nichts kompiliert.
Das funktioniert also nicht in LESS
Für mich allein zeigt das bereits eine der Hauptschwächen ihrer klassenähnlichen Einbindung. Eine, die SASS nicht hat, weil ihr @include immer eigenständig ist, ohne dass Namensschemata wie .classname() verwendet werden.
Bemerkenswert wären auch die SASS-Funktionen, die viel mehr Kontrolle über Ihre Ausgabe und Möglichkeiten zur Arbeit mit Ihren CSS-Variablen bieten, die LESS einfach nicht hat (noch nicht).
Wie man's nimmt, aber in einem Vergleich gewinnt SASS meiner Meinung nach verdient die Auszeichnung "Besser als X".
Wir sind vor ein paar Monaten zu SASS gewechselt, aus einigen der im Artikel genannten Gründe. Erst in der letzten Woche habe ich wirklich die Stärke von Compass erkannt.
Nur einige der Dinge, die ich als unverzichtbar empfand, sind:
– CSS3 Mixins,
– IE-Filter-Fallback (< IE9) und SVG-Gradienten-Fallback (IE9)
– Inline-Bilder als Base64-Strings
– Cache-busting CSS-Bilder
– Ein Compass-Plugin namens rgbapng, das bei Übergabe eines rgba-Werts automatisch ein 1x1px opakes Bild generiert und es in Ihr CSS für Browser einfügt, die RGBA nicht verstehen.
– Übergabe von Hex-Werten anstelle von RGB, um RGBA-Werte zu erhalten
– Ceaser Mixins
– Spriting war ein Segen!!!!
Danke Chris! Habe viel von diesem Artikel gelernt. Wollte schon lange die Unterschiede zwischen SASS & LESS verstehen. Muss man nicht sagen, wurde mir einfach so gegeben. Danke!
Ich denke, die durch JavaScript kompilierbare Natur ist ein großer Vorteil für LESS, der in der Liste fehlt. Sie ermöglicht die Live-Vorschau von LESS-Bearbeitungen im Scripts n Styles WP-Plugin (plug). Dies ermöglicht übrigens verbesserte Fehlermeldungen. Ich kann LESS schreiben, die Ergebnisse in Echtzeit sehen und dann das kompilierte CSS direkt aus dem Adminbereich des Blogs veröffentlichen. Offensichtlich bin ich voreingenommen für LESS :-) Prost!
Ich liebe es, wenn Leute, die wissen, wovon sie reden, zwei Dinge vergleichen. Ihr Artikel ist sehr gut, aber... ehrlich gesagt, ich denke, am Ende sind solche Artikel nutzlos, wenn Sie sie zusammenfassen, indem Sie sagen, dieses ist besser, weil es in 10 Bereichen gewonnen hat, während das andere nur 5 gewonnen hat. Okay, 10 ist mehr als 5, aber was, wenn die 5 Punkte für einen Programmierer oder Designer viel wichtiger sind als die 10? Zweitens mag ich es nicht, wenn Leute nur Features vergleichen, denn sie vergessen oft die Community.
Zum Beispiel liebe ich das Dojo Toolkit für Dinge in JavaScript. Ich denke, Dojo ist in vielerlei Hinsicht überlegen im Vergleich zu MooTools oder JQuery. Aber am Ende ist das Wichtigste, wie viele Leute dieses Framework nutzen. Dojo wird von einer sehr kleinen Minderheit von Codern genutzt, aber jQuery wird von den meisten Websites genutzt. Das ist so wichtig, weil wir bei der Arbeit oft schnell etwas brauchen, weil ein Kunde es angefragt und für gestern haben möchte. Wenn ich einen News-Slider brauche, ein cooles Widget, das dies oder das tut, oder etwas anderes ... natürlich kann ich es mit dojo coden und eine große Zahl auf die Rechnung setzen. Das Ergebnis ist, dass der Kunde zufrieden ist, weil er das bekommen hat, was er wollte, aber andererseits ist er nicht glücklich, weil Sie ihn viel bezahlen lassen.
Wenn ich das gleiche Skript für jQuery brauche, suche ich zuerst bei Google und finde meistens Code, der fast das tut, was ich wollte, ich nehme ein paar Änderungen vor und kann es veröffentlichen. Der Kunde ist sehr glücklich, weil seine Anfrage sehr schnell erfüllt wurde und auch, weil ich sehr günstig war.
Das liegt daran, dass die jQuery-Community riesig ist. Die Dojo-Community ist klein. Sie können alles in Dojo sehr professionell machen, aber mit jQuery und jetzt jQuery Mobile müssen Sie meistens nichts selbst machen. Also, auch wenn ich Dojo sehr bevorzuge, verwenden wir bei der Arbeit jQuery für alle unsere Projekte.
Ich denke genau dasselbe. SASS mag das bessere Werkzeug für die Aufgabe sein, niemand benutzt es.
Versuchen Sie, gute SASS-Tutorials zu finden, und Sie werden sehen, was ich meine. Immer mehr Open-Source-Projekte auf Github verwenden LESS zur Verwaltung ihrer CSS-Dateien, ich habe bisher kein Projekt gesehen, das SASS verwendet. Viele Frameworks wie Twitter Bootstrap verwenden LESS, warum sich also die Mühe machen, die beste Lösung zu finden, denn am Ende zählt nur, wie groß die Community ist und wie viele Projekte sie unterstützen.
Toller Beitrag! LESS ist gut, aber das benötigte JS schreckt mich davon ab. Aber ich muss sagen, dass CodeKit eine fantastische Software ist!
Es wird kein JS benötigt.
Wie angegeben: Sie KÖNNEN die JS-Datei einfügen, um CSS on the fly zu erstellen, aber wie jeder (wissen sollte) sollte man sich nicht auf JS für Stile verlassen.
Verwenden Sie eine der vorgestellten Anwendungen (Codekit ist mein Favorit!), um die LESS-Datei in CSS zu kompilieren, und los geht's.
Ich verwende LESS, es hat viele Dinge, die ich noch nicht benutze. Aus den angebotenen Funktionen sind SASS/Stylus leistungsfähiger, aber immer noch – es ist noch mehr Zeug, das ich nicht verwenden werde.
Sprite-Handling sieht auf den ersten Blick gut aus, aber ich habe noch keinen automatisierten Prozess gefunden, der ihn besser macht als manuelles Rollen. In einigen automatisierten Situationen ist es wahrscheinlich großartig, aber für mich gibt es keinen Anwendungsfall.
Mit LESS ist der Einstieg super einfach. Das ist das Wichtigste, fangt an, eines davon zu benutzen. Ich werde vielleicht später zu SASS wechseln, aber im Moment ist LESS mehr als genug...
Joacim: Wenn Sie Sprites verwenden, dann ist Compass Ihr Ding. Es erstellt das Sprite, macht jedes Bild im Sprite leicht referenzierbar und es ist auch sehr einfach, die Abmessungen der Bilder zu erhalten, die Sie in Ihr Sprite laden.
Wenn Sie es nicht benutzen, verpassen Sie etwas :)
Torkil: Wie ich sagte – "Sprite-Handling sieht auf den ersten Blick gut aus, aber ich habe noch keinen automatisierten Prozess gefunden, der ihn besser macht als manuelles Rollen."
Compass listet einfach alle Bilder vertikal auf, das ist keine optimale Lösung
https://developers.google.com/speed/docs/best-practices/rtt#SpriteImages
Ich baue meine eigenen Sprites schnell mit Sprite Cow
http://www.spritecow.com/
Nicht so schnell wie Compass, aber meine sind effizienter.
@Joacim Sie können Compass so konfigurieren, dass Ihre Sprites effizient erstellt werden, wenn Sie möchten. Ich verwende die "smart"-Einstellung, die alle Sprites zusammenbündelt. Standardmäßig gibt es keine Lücke zwischen den Sprites, aber Sie können sie bei Bedarf größer konfigurieren. Siehe hier http://compass-style.org/help/tutorials/spriting/sprite-layouts/
@Joachim: Falsch. Sie können vier verschiedene Layout-Arten für Ihre Sprites verwenden, nicht nur vertikal: http://compass-style.org/help/tutorials/spriting/sprite-layouts/
... und wie können Sie ernsthaft sagen, dass etwas, das "nicht so schnell" ist, "effizienter" sein kann? :)
Danke Ken für "den Punkt". Meiner Meinung nach ist der Gewinner LESS, weil es in JavaScript implementiert ist.
Thema Community
– http://twitter.github.com/bootstrap/less.html
– https://github.com/popular/forked
2 Dinge
1/ Es sei denn, Compass kennt die Statistiken des von mir entwickelten Standorts, hat es keine Möglichkeit zu wissen, welche Präfixe es aufnehmen soll. Es kann eine fundierte Vermutung anstellen, aber es wird kein handgeschriebenes Styling übertreffen. Das ist also ein schwacher Gewinn für SASS.
2/ Ich bin mir nicht sicher, ob das Gruppieren von Selektoren eine so gute Idee ist, da es Selektorgewichtsprobleme einführen kann, indem Selektoren neu gruppiert werden. Ihre CSS von der Quellreihenfolge abhängig zu machen (wenn Selektoren übereinstimmen und das gleiche Gewicht haben, gewinnt der letzte in der CSS), ist natürlich von Anfang an eine schlechte Idee, aber Sie wären überrascht, wie üblich es ist. Ein Präprozessor, der den Stil neu gruppiert, könnte und wird unbeabsichtigte Fehler verursachen. Also wieder ein schwacher Gewinn für SASS.
Wenn die Leute doch nur schneller wären, diese Dinge in die CSS-Spezifikation selbst zu bekommen, damit die Verarbeitung vom Browser übernommen werden könnte. Aber eine schöne Ausarbeitung, hatte nie viel Interesse an SASS wegen des ganzen Ruby-Deals und ich bin bisher ziemlich glücklich damit, LESS zu schreiben, aber es ist gut zu wissen, was ich vielleicht verpasse.
Sie können konfigurieren, welche Präfixe Compass verwendet, mit den Konfigurationsvariablen.
Aber es ist standortabhängig. Manchmal gibt es genügend Besucher, um FF3.6-Unterstützung zu rechtfertigen (benötigt immer noch -moz für abgerundete Ecken), manchmal gibt es keine und Sie können es einfach eliminieren. Was ist der Unterschied zwischen dem Entfernen einer Eigenschaft aus Ihrem Mixin und der Konfiguration von Compass?
Hat jemand schon csscrush benutzt? http://the-echoplex.net/csscrush/
Wie schneidet es ab?
Auto-Prefixing ist wirklich cool. Ich frage mich, warum andere Präprozessoren das nicht tun und bei der Mixin-Lösung bleiben. Zumindest könnte es eine Option sein.
Ich bin für Präprozessoren, ich denke, sie sind eine super effiziente Methode zur Behandlung von CSS. Aber hier ist meine Frage. Angenommen, ich schreibe eine SASS-Datei, generiere die CSS-Datei und dann modifiziert ein Kollege von mir die CSS-Datei (weil sie SASS nicht verwenden). Was nun? Ich bin gezwungen, die CSS-Datei so zu verwenden, wie sie ist, anstatt zu präprozessieren. Ich denke, Präprozessierung funktioniert nur, wenn alle in der Montagelinie die Präprozessor-Datei verwenden. Irgendwelche Gedanken?
Alle im Team müssen VOLL DABEI sein.... jedes Mal, wenn Sie die .sass bearbeiten, wird die Arbeit Ihres Kollegen überschrieben (lokal)... :-(
Was ich bei diesem neuen Projekt gemacht habe, ist, den PHP-Entwickler zu bitten, seine Stile in den Style-Tags am Anfang der Seite zu belassen – und ich füge seine (meist geringfügige) Arbeit am Morgen in die SASS-Datei ein (sie sind in Indien und ich in den USA, also funktioniert das in dieser Situation ganz gut).
Interessante Lösung! Ich werde versuchen, sie zu übernehmen. Da ich normalerweise mit einem Grafikdesigner zusammenarbeite, der die Website gestaltet, mir die PSD-Dateien schickt und ich sie entwickle. Das Problem entsteht, wenn sie kleinere Änderungen an den CSS-Dateien vornimmt, wie z. B. die Änderung einer Schriftgröße um ein Pixel oder etwas Ähnliches, und ich befürchte, dass die Verwendung von .sass mich tatsächlich verlangsamen wird, aufgrund des Hin und Her und des Versuchs, zu sehen, welche Änderungen sie vorgenommen hat.
Aber wenn ich sie bitte, die Änderungen am Ende der CSS-Datei einzufügen, dann kann ich die Änderungen, die ich denke, leicht vornehmen.
Ich denke, es wäre sehr praktisch, wenn wir die .sass-Datei auf dem Server platzieren und sie serverseitig kompilieren lassen könnten, sodass beide Personen die .sass-Datei bearbeiten könnten. Denn seien wir ehrlich, vielleicht ist es schwierig, eine .sass-Datei von Grund auf neu zu erstellen, aber die Bearbeitung wäre wahrscheinlich relativ einfach und eine Aufgabe, die jeder erledigen könnte.
Ein Trick ist die Verwendung der "komprimierten" Einstellung für die Kompilierung von SASS, so dass, wenn ein Kollege sie öffnet, eine sofortige visuelle Erinnerung daran hat, dass er diese Datei nicht bearbeiten sollte =)
Das Erste, was SASS im CSS-Code generiert, ist ein Kommentar, der besagt: "Bearbeiten Sie diese generierte CSS-Datei nicht! Bearbeiten Sie nur die SCSS-Quelldateien!"
Coworking mit SCSS/LESS ist wirklich einfach: Committen Sie einfach keine CSS-Dateien in Ihr Repository. Sie werden jetzt generiert, und die Quelle ist die SCSS-Datei. Build-Jobs (in Kombination mit Jenkins) sollten die Kompilierung von CSS-Dateien für die Bereitstellung übernehmen, aber das Quell-Repository bleibt schön und sauber :-)
Ich verstehe. Chris, ich denke, ich werde Ihren Rat mit der "komprimierten" CSS-Ausgabe befolgen. Ich denke jedoch, es wäre großartig, wenn jemand einen Online-SASS-Compiler erstellen würde, damit man die .sass-Datei online speichern, bearbeiten, online kompilieren und die Änderung sofort sehen könnte. Anstatt die .sass-Datei herunterzuladen, sie zu bearbeiten, zu kompilieren und die neu erstellte .css-Datei hochzuladen...
Amit, es gibt hier etwas, wenn das ist, was Sie meinen?
https://sass-lang.de/try.html
Aber das bezieht sich nicht nur auf die SASS/LESS-Entwicklung, es ist nie eine gute Idee, Ihre "Live"-Dateien im laufenden Betrieb zu bearbeiten.... Sie sollten wirklich eine Dev-Kopie auf Ihrem lokalen Rechner oder Server haben, und sobald Sie Ihre Änderungen vorgenommen und getestet haben, pushen Sie sie live...
Wo ich arbeite, haben wir angefangen, SASS zu verwenden, und wir haben entschieden, dass es alles oder nichts ist. Es würde nicht funktionieren, wenn einige Leute die SCSS bearbeiten und andere die generierte CSS. Nur zur Erinnerung: Das CSS-Verzeichnis hat eine große TXT-Datei namens "EDIT CSS NICHT!!! VERWENDET SASS.txt".
@Pat: ja, ich denke, das meinte ich!
Ich stimme Ihnen zu, dass die Arbeit an einer lokalen Dev-Kopie weitaus besser ist, als spontane Änderungen vorzunehmen. Und so arbeite ich immer. Mein Kunde möchte jedoch häufig kleine Details ändern, wie z. B. Schriftgrößen und vielleicht ein Pixel Padding hier und da. Daher greife ich auf einen Prozess zurück, bei dem ich die CSS-Dateien immer wieder herunterladen muss, um zu verhindern, dass ihre Änderungen durch Überschreiben der Dateien rückgängig gemacht werden.
Wie auch immer, ich werde mich wahrscheinlich an diesen Compiler halten, vorausgesetzt, er kann auch große .sass-Dateien rendern! Danke!
Amit: http://www.webputty.net/
@Torkil: sieht interessant aus! Aber was ist mit Open-Source und der Website, die herunterfährt?
@Amit: Was meinen Sie? Das sind tolle Neuigkeiten :)
Es lohnt sich zu sagen, dass LESS und SASS unterschiedliche Paradigmen nutzen. SASS ist über das übliche imperative Paradigma (Ifs, Loos, komplexe Logik usw.), während LESS versucht, deklarativer und funktionaler zu sein (Guards, minimale Logikfluss, keine Ifs, keine Loops usw.).
SASS/Compass sind leistungsfähig und haben fast alles, was man zum Stylen braucht. LESS ist absichtlich begrenzt, manchmal zu sehr (keine benannten/Schlüsselwortargumente, z.B.). Positiv an LESS: Man kann es ohne Abhängigkeiten/Compiler verwenden, einfach ein Tag einfügen (ich fand es nützlich für schnelles Prototyping).
Ich benutze beide und kämpfe manchmal mit ihren Problemen. Ich habe auch Stylus in einem Projekt ausprobiert, fand es aber etwas unvorhersehbar und zerbrechlich. Und ich bin mir nicht sicher, ob das Weglassen von Doppelpunkten, Semikolons und Schlüsselwörtern bei Stylus eine gute Idee ist (es ist lustig, der Stylus-Entwickler schimpft viel über CoffeeScripts, hat aber viele seiner Features in seinen Stylus übernommen).
Und ja, Compass FTW.
LESS gewinnt für mich wegen der einfachen Einrichtung und einfachen Bedienung. Wir betreiben viele Expression Engine-Projekte und jemand hat ein praktisches EE-Plugin für LESS erstellt. Sie sagen ihm nur, wo sich Ihre LESS-Dateien befinden und wo Sie Ihr CSS kompilieren möchten, und es kümmert sich um alles andere. Sicher, der Plugin-Parser ist nicht perfekt und er könnte wirklich eine Aktualisierung gebrauchen (Hinweis Steven Milne ;)), aber es bedeutete, dass unser Team LESS in wenigen Minuten nutzen konnte.
Muss zugeben, SASS + Compass sieht wie eine Killer-Kombination aus, ich würde es gerne ausprobieren
<– auf einem voll skalierbaren Projekt
Ich benutze SASS seit etwa einem Jahr und wir verstehen uns so gut, ich werde ihr bald einen Heiratsantrag machen! :)
– Rick
Ich habe LESS und SASS benutzt und für die Entwicklung ist LESS super einfach einzurichten.
SASS, nun, ich hatte meine Probleme, selbst nach der Installation der Gems.
Ich muss sagen, dass ich die SASS-Syntax bevorzuge. Ich habe die Vererbungsfunktionen noch nicht benutzt, was man als Code-Aufblähung bezeichnen könnte, aber das liegt daran, dass ich sie bisher noch nicht ganz verstanden habe (bis jetzt) und weil ich gerade das hier gelesen habe und einen Mini-"A-HA"-Moment hatte :p
Guter Vergleich :)
Bezüglich der @media-Verschachtelung hat LESS diese Funktion (https://github.com/cloudhead/less.js/pull/643), mit der Sie @media-Größen einer Variablen zuweisen können. So können Sie die Verschachtelung noch einfacher als mit SASS (meiner Meinung nach) durchführen und Sie müssen keine Alpha-Version verwenden. Ihr Beispiel würde also so aussehen
@phone: ~”screen and (max-width: 767px)”;
.some-class {
/* Standard-Styling */
@media @phone {
/* Responsive Styles */
}
}
LESS +1 :)
Nun, das können Sie auch in Sass tun. Und auch wieder für alles, was mit Media Queries zu tun hat, in Sass: http://susy.oddbird.net/
Präprozessierung fühlt sich für mich nicht wie "echter" Code an.
Sie verpassen etwas :) (und sparen keine Zeit)
Was ist mit der Leistung?
Es gibt eindeutig einen nachgewiesenen Bedarf/Wunsch nach Präprozessoren, die sozusagen als fehlendes Stück CSS angesehen werden, das wir uns immer gewünscht haben. Macht es Sinn, dass dies jemals Teil des CSS-Standards selbst wird?
Ich stelle mir vor, dass im Grunde eine Art Syntax vom W3C vereinbart werden könnte und Browser sie dann nativ verarbeiten.
Ich muss vielleicht auf den SASS-Zug aufspringen bei meinem nächsten Projekt. Ich habe mit LESS angefangen, weil es Sinn ergab, aber wenn ich einige der Unterschiede bei Verschachtelung/Erweiterung sehe, könnte SASS für mich der bessere Weg sein. Hoffentlich ist die Lernkurve nicht schlimm (sieht auf den ersten Blick nicht so aus).
Toller Beitrag, Chris!
Ich denke, was darüber entscheidet, wer gewinnt, ist, wie diese Präprozessoren in IDEs integriert werden. Derjenige, der am einfachsten direkt aus der Entwicklungsumgebung kompiliert werden kann, wird mehr Benutzer gewinnen.
+1 für Stylus. Ich habe sowohl ihn als auch SCSS verwendet. Mit beiden kann man nichts falsch machen, aber Stylus hat die Nase vorn.
SASS läuft auf einem Mac fast out of the box, daher ist die Installation kein Problem, wenn Ruby bereits läuft.
Was mich verwirrt, ist, dass Leute immer noch die Syntax für lineare Verläufe falsch verwenden, nachdem sie vor einigen Monaten geändert wurde. Im ungeprefixkten Wert sollte nicht die Start Ecke angegeben werden, sondern der Endpunkt. Siehe http://www.1stwebdesigner.com/css/mastering-css-gradients-in-less-than-1-hour/#comment-205142
Chris ist hier nicht wirklich schuld; Compass generiert den falschen Code. (Wenn es das immer noch tut. Oder wurde es bereits behoben?)
Hier ist ein weiterer Grund, warum ich LESS statt SaSS verwende
1. Ok, es gibt einen Backport von Bootstrap zu SaSS. Wer ist verrückt genug, eine weitere Ebene hinzuzufügen?
2. LESS wird in unserem großen CMS für ein großes CAC40-Unternehmen verwendet
=> IT-Typen wollen keine neue Sprache wie Ruby. Sie wollen Java/WebSphere/Weblogic.
=> LESS wird serverseitig vorverarbeitet/gecached (in Java), weil im echten Leben Dateien geändert, gepatcht usw. werden.
3. Zu Debugging-Zwecken ist LESS JavaScript: Es funktioniert also mit jsFiddle, iPad Apps, SaaS-Websites wie WordPress ... alles, was reines altes JavaScript kennt.
4. 2 Sprachen (sass, scss) für SASS sind eine zu viel. Und .sass spricht Entwickler, keine Designer. Vergessen Sie nicht, dass das Endziel dieser Frameworks darin besteht, die Lücke zwischen CSS3 und der nächsten Version zu schließen.
Viele Leute haben SaSS wegen Compass gewählt und weil Bootstrap nicht existierte => großer Hype. Aber jetzt haben sich die Dinge geändert und die Bootstrap-Community wird größer.
1) Wenn Sie Bootstrap benötigen, dann verwenden Sie auf jeden Fall LESS, da Bootstrap auf LESS basiert.
2) Wenn Ihr Unternehmen sich bereits für LESS entschieden hat, dann bleiben Sie auf jeden Fall bei LESS. Es ist einfach albern, nicht zu benutzen, was Ihre Kollegen bereits benutzen. Übrigens: Ich benutze Sass und kenne keine einzige Zeile Ruby. Nicht sehr beängstigend.
3) Debugging ist auch in Sass/Compass großartig und es wird serverseitig durchgeführt und gibt (sehr spezifische) Fehler direkt auf dem Bildschirm aus. Funktioniert auch bei ausgeschaltetem Javascript. Haben Sie es versucht?
4) Das ist dann Ihre Meinung. Ich bin mir nicht sicher, warum Sie denken, dass "Sass mit Entwicklern spricht" mehr als LESS, da sie sehr ähnlich sind. Liegt es daran, dass Sie annehmen, dass Sie Ruby kennen müssen, um Sass zu verwenden? Oder weil Javascript viel einfacher ist als Ruby? (Sie liegen bei beiden falsch)
Bootstrap und Compass zu vergleichen ist wie Äpfel mit Birnen zu vergleichen. Compass ist wie ein Werkzeugkasten und Bootstrap ist eher ein Bauplan/Gerüst. Wie ich bereits sagte: Hätte Bootstrap auf Compass basiert, hätte es seinen Codebasis erheblich reduziert, anstatt das Rad so oft neu erfinden zu müssen.
Und Sie nehmen zu viel an, wenn Sie glauben, die Leute hätten Sass/Compass gegenüber LESS gewählt, weil Bootstrap nicht existierte.
Klingt nicht so, als hätten Sie Sass/Compass überhaupt schon ausprobiert?
Wie auch immer: LESS ist auch eine gute Wahl, und ich empfehle, beides auszuprobieren. Und es ist nicht so, als müssten Sie zwei Programmiersprachen lernen; die Syntax ist fast identisch.
Wir haben LESS in unserem Unternehmen aus verschiedenen Gründen etabliert. Einige von uns entwickeln immer noch unter Windows und sind nicht mit der Kommandozeile vertraut. SCSS-Apps sind unter Windows nicht wirklich nutzbar (Scout stürzt ab und zu ab) und WinLess ist ein fast perfektes Gegenstück zu Less.app auf dem Mac. So können wir eine einheitliche Entwicklungsumgebung für alle unsere Entwickler schaffen, unabhängig vom Betriebssystem.
Außerdem habe ich LESS viel einfacher in unseren bereits etablierten Bereitstellungsprozess mit Jenkins und ANT-Build-Dateien integrieren können. Die LESS-Engine war so einfach mit Rhino bereitzustellen wie sie es auf Node gewesen wäre, und das Erstellen einer Ant-Aufgabe zum Kompilieren war ein Kinderspiel. Und das ist wirklich wichtig, wenn man an großen Projekten mit vielen Entwicklern arbeitet.
Zu guter Letzt ist Compass wirklich raffiniert, aber wir brauchen es einfach nicht. Zumindest noch nicht.
Als ich meine eigene Auswertung von LESS & SASS durchführte, war ich ein wenig abgeschreckt von der Komplexität von SASS und verwirrt von der SASS-Formatierung im Vergleich zu SCSS oder davon, wie Leute Compass und SASS fast austauschbar verwendeten. Wie der Autor erwähnte, war die Dokumentation für SASS nicht so klar/nutzbar, wie ich es mir gewünscht hätte. Am Ende des Tages war LESS der De-facto-Gewinner. Es tat alles, was ich brauchte, und obwohl es dies nicht auf eine technisch reine Weise tat (wo Entwickler Punkte für SASS vergeben), war das Ergebnis im Allgemeinen dasselbe.
Wie immer ist es eine Frage der Vorliebe, die manchmal auf einem Bauchgefühl der Bequemlichkeit beruht. Leute werden sich in Kriege stürzen, um ihr bevorzugtes Framework zu verteidigen. Was wir hier schon ein wenig gesehen haben; Leute, die sich gegenseitig beschuldigen, x keine Chance gegeben zu haben oder y noch nicht einmal benutzt zu haben; und andere solche Ignoranz.
Ich denke, Artikel wie dieser sind gut, um Leute zum Nachdenken anzuregen, ihnen eine Einführung in ein Werkzeug zu geben und sie Dinge betrachten zu lassen, an die sie vielleicht nicht gedacht hätten. Letztendlich müssen diese Personen jedoch sitzen und die gleiche Auswertung selbst durchführen, anstatt einfach das beliebte Tool oder den Underdog zu nehmen, weil myFavoriteSite.com gesagt hat, es sei technisch besser.
Der allgemeine Trend (anekdotisch), den ich in den Kommentaren hier und auf anderen Websites sehe, ist, dass LESS einfach ist und von sich aus schon viel leistet, während es eine niedrige Eintrittsschwelle beibehält. Das würde es für etablierte Shops und Designer bereit für die Übernahme machen; Leute, die nicht bereit sind, eine neue Sprache einzuführen, oder die einfach nur einen schnellen Produktivitätsgewinn wünschen.
SASS hingegen scheint mehr Zugkraft bei Entwicklern zu haben, wie z. B. bei denen, die bereits in Ruby sind, oder bei denen, die eine erhebliche Kontrolle über ihre Umgebungen und Ausgaben haben. Es scheint mir, dass recht viele Leute, die SASS verwenden, auch Compass erwähnen, was darauf hindeutet, dass entweder Compass ihr Einstieg in die SASS-Welt war ODER dass sie, sobald sie SASS gefunden hatten, einige Lücken fanden, die Compass ausfüllte.
Toller Artikel & Vergleich. Zuerst einmal: Kenne dein CSS, bevor du mit einem Präprozessor herumspielst.
Ich werde von nun an LESS ausprobieren... Gut beschrieben.
Bommer!! Bevor ich mich in all diesen SASS, Compass und CodeKit vertieft habe, dachte ich, dass
Durch all die Raffinesse würde einfach nur
Es wird tatsächlich (..und nach dem Umbenennen von style.css in style.scss) so dumm wie
So wie ich das verstehe, ist das nicht einmal mit Frameworks in CodeKit möglich? ..oder habe ich etwas übersehen?
Es scheint, dass ich es dann durch einen CSS-Kompressor namens CSSTidy http://csstidy.sourceforge.net/usage.php laufen lassen muss, der es schafft, Optimierungen auf Weltmeister-Niveau durchzuführen :D
Für andere Interessierte, ich nehme alles zurück und empfehle, CSSTidy NICHT zu verwenden, da es sehr veraltet, tot und NICHT VIEL CSS3 unterstützt, wie z. B. mehrfache Hintergrund/-bild-Deklarationen für Anbieter, Keyframe-Animationen und Media Queries.
Ein magischer und praktisch selbsterklärender CSS-Kompressor wie dieser wurde einfach noch nicht erfunden – und ich bin mir ziemlich sicher, dass er es nie sein wird. – Wegen dieser zahllosen Möglichkeiten, Ihren Code zu brechen.
Wenn Sie also dumme Sachen als Sub-Theme faul pflegen, akzeptieren Sie eine etwas größere Ausgabe (verursacht durch die Überschreibungen) und komprimieren Sie IMMER mit YUI Compressor oder ähnlichem.
Es gäbe keinen Bedarf für so etwas in jedem anderen Fall, wenn Sie Ihre Arbeit richtig gemacht hätten.
Hmmm, ich bin neu in der CSS-Style-Webwelt, vielleicht sollte ich Ihre Website bookmarken :)
Zuerst einmal, toller Beitrag. Gut, dass Sie unparteiisch sind. Ich benutze derzeit SASS und werde mir Compass ansehen, um meinen Workflow zu verbessern.
Viele meiner Kollegen benutzen LESS und ich befürchte, dass mein Manager es SASS vorziehen wird, also muss ich etwas umwandeln! Die SASS-Website muss dringend überarbeitet werden!
Hey,
Wie benutzt man Compass/SASS und WordPress? Compass gibt eine screen.css aus, während WordPress eine style.css benötigt. Übrigens: ich bin unter Windows unterwegs.
Wie geht LESS mit diesem Thema um?
Sie können Ihre Dateien nennen, wie Sie wollen, es gibt weder in Compass noch in WordPress eine Anforderung, dass Ihre CSS-Dateien einen bestimmten Namen haben müssen.
*weder – noch. Verdammt.
Ich habe etwas Ähnliches dazu auf http://freshma.de/integrating-less-into-wordpress geschrieben, im Grunde können Sie einfach eine neue CSS-Datei erstellen (oder SASS/LESS) und sie als @import zur wordpress style.css aufrufen, wenn Sie die Namenskonventionen beibehalten möchten.
Der einzige Grund, warum ich mich dafür entschieden habe, ist, dass die meisten Kompilierer wie CodeKit und Ähnliches Kommentare entfernen und WordPress die Kommentare in der style.css zum Identifizieren Ihres Themes bevorzugt.
In den meisten Kompilierern, die ich gesehen habe, einschließlich CodeKit, können Sie konfigurieren, ob Sie Kommentare entfernen möchten oder nicht.
Ich sehe ehrlich gesagt keinen Sinn darin, eine weitere Syntax zu lernen, wenn man bereits bedingtes CSS in JavaScript machen kann.
Ich muss etwas verpassen
Ich habe bisher nur LESS benutzt. Ich habe es zugegeben gegenüber SASS gewählt, wegen ihrer Website. Ich konnte die LESS-Syntax praktisch auf den ersten Blick lernen und somit ohne erwartete schwierige Lernkurve oder ständige Notwendigkeit, die Dokumentation zu durchsuchen, mit der Nutzung in meinen Projekten beginnen. Das war ein entscheidender Faktor nicht nur bei der Wahl von LESS gegenüber SASS, sondern überhaupt beim Ausprobieren eines CSS-Präprozessors. Ich lobe LESS dafür, diese Hürde überwunden zu haben.
Nachdem ich diesen Artikel gelesen habe, kann ich verstehen, warum SASS als "besserer" Präprozessor gelten mag, aber ich bin immer noch nicht davon überzeugt, dass es die bessere Lösung für mich ist. Ähnlich wie ein Mac ein besseres Erlebnis als ein PC bietet, obwohl die meisten PCs oft mehr Leistung und Flexibilität bieten, finde ich LESS ein besseres Erlebnis und einfach praktischer als SASS. Ich bin offen für eine Änderung, aber vorerst bleibe ich dabei.
Hier ist ein kurzer Gist, der einen einfachen Vergleich mit LESS, Sass und Stylus zeigt. Stylus gewinnt
Sass vs Stylus vs LESS
Sass gewinnt, weil es Compass hat und weil es das Standard-CSS-Framework für Ruby on Rails ist. Unterschätzen wir die Popularität nicht. :)
Es gibt Unmengen von Erweiterungen, die nur eine `gem install`-Entfernung entfernt sind.
Ruby unter Windows ist extrem einfach zu installieren.
Ich habe versucht, mit Less anzufangen, aber es kommt SASS mit Blick auf verfügbare Plugins nicht annähernd heran.
Ich bin faul und mag es nicht, Räder neu zu erfinden.
Sass-buttons, Suzy, Compass, Bourbon.
Und ich kann zwischen zwei Syntaxen wählen: scss oder sass.
Angst vor der Kommandozeile?
Führen Sie einfach 'compass watch' in einer Box aus, und das war's.
Es spuckt jedes Mal CSS aus, wenn sich eine scss/sass-Datei ändert.
Und dann laden Sie einfach das generierte CSS auf Ihren Server hoch.
Wie fange ich an?
Installieren Sie Ruby.
Und führen Sie dies aus
gem install compass
Oder, wenn Sie Suzy verwenden
gem install susy --pre
Es wird automatisch alle Abhängigkeiten behandeln.
Danke, dass Sie mir diese Gelegenheit geben, Sass/Compass zu evangelisieren :)
Ich liebe LESS, besonders mit SimpLESS. SimpLESS prüft Ihren .less-Code auf Änderungen und kompiliert "Vanilla-CSS" im Handumdrehen! Ich ärgere mich, dass ich es nicht früher ausprobiert habe!
Wenn Sie auf einem Mac sind, schauen Sie sich CodeKit an: http://incident57.com/codekit
Es ist großartig! Unterstützt LESS, Stylus & SASS + viel viel mehr!
Ich bin ziemlich sicher, dass Team Treehouse SASS verwendet: http://everyonecanweb.com/?imageId=1307
Und wenn ich mich nicht irre, ist das Nick Petits Arbeit. Aber ich weiß nicht, ob er dort nur ein Lehrer ist oder nicht.
Nur eine weitere Stimme für Stylus! Seine einfache Syntax macht das Lesen und Schreiben von Mixins und erweiterten Klassen zum Kinderspiel.
Stylus fühlt sich mehr wie Programmieren an, zum Beispiel anstatt eine Variable auf 'CSS'-Art zu erstellen
$var: 5pxTun Sie
var = 5pxKennt jemand den CSS-Editor für LESS und SAAS? Ich benutze Adobe Dreamweaver CS5, aber es unterstützt es noch nicht..
Geht es um Syntaxhervorhebung? Sowohl LESS als auch die SCSS-Syntax von Sass sind Obermengen von CSS, daher brauchen Sie keine spezielle Syntaxhervorhebung. Verwenden Sie einfach die CSS-Syntaxhervorhebung.
Wenn Sie einen Kompilierer für LESS oder Sass benötigen, empfehle ich die Verwendung der Kommandozeile, wie in den Tutorials beschrieben, oder die Suche nach Codekit.
Obwohl ich es selbst noch nicht ausprobiert habe (ich benutze Sass unter Linux), gibt es einen LESS-Compiler für den PC (Windows), und da Codekit nur für Mac ist, dachte ich, ich poste es hier, falls es hilft. :)
es ist hier: http://wearekiss.com/simpless
in less
.loopingClass (@index) when (@index > 0) { .myclass {z-index: @index } .loopingClass(@index - 1); } .loopingClass (0) {} .loopingClass (3);Es gibt drei Klassen mit demselben Namen aus, aber... wofür?
.myclass {z-index: 3;} .myclass {z-index: 2;} .myclass {z-index: 1;}Ich habe mit SASS angefangen und mir LESS angesehen. SASS hatte jedoch mehr Funktionen und eine stärkere Entwicklergemeinschaft um sich herum, also wählte ich SASS.
Toller Artikel =) Ich benutze LESS schon eine Weile, aber noch nie SASS... Ich denke, ich werde es einrichten und es ausprobieren... Es klingt viel weiter als LESS.
Ich benutze SASS nun seit etwa einem Jahr, nachdem ich die exzellente Erweiterung Midscape Web Workbench für Visual Studio gefunden habe. Sie läuft innerhalb von VS, beinhaltet Compass und kompiliert CSS, während Sie jede SCSS-Datei speichern. Das generierte CSS kann dann in das integrierte Bündeln und Minifizieren einbezogen werden.
Bei der Wahl würde ich immer SCSS gegenüber einfachem CSS bevorzugen. Immer.
Auf der Suche nach einer Möglichkeit, das Schreiben von CSS zu optimieren, bin ich auf LESS und SASS gestoßen. Ich finde die Syntax von SASS sehr verwirrend, daher bleibe ich wahrscheinlich bei LESS oder SCSS.
Allerdings finde ich den Artikel sehr gut.
Danke für die Erklärung.
Aber hat SASS einen reinen PHP-Compiler?
SASS scheint gut, aber ich benutze JojoCMS, das LESS-Dateien direkt unterstützt. Ein einfaches erzwungenes Aktualisieren und alle LESS-Stile werden neu kompiliert, keine externen Tools erforderlich.
Toller Artikel, wie immer. Vielen Dank. Ich war etwas verloren, bevor ich Ihren Vergleich gelesen habe. Und tolle Arbeit bei der Aufschlüsselung der Antwort nach Länge.
Nun, ich war ein LESS-Benutzer, jetzt benutze ich SASS. Da SASS perfekt zu Ruby passt. Und SASS hat einige Farbfunktionen. Ich mochte die SASS-Funktionen und Mixins (auch tolle Bibliotheken wie Bourbon und Compass) über LESS.
LESS ist einfach zu starten und einzurichten, während SASS am Anfang kompliziert einzurichten ist. Aber beide haben eine ähnliche Syntax. Ich bin seit einem Monat ein Vollzeit-SASS-Benutzer.
Toller Artikel. Viel über den Vergleich verschiedener Werkzeuge gelernt.
Zeit für ein Update ausstehender Probleme? ;-)
Kann ich in Sass die Farbe in einer Variablen erkennen, ob sie hell oder dunkel ist? Wenn ja, wie?
Wenn Sie Webentwickler sind, sollten Sie sowohl LESS als auch SASS lernen.
Wenn Sie an einem Projekt arbeiten, sich für eines entscheiden und keine bestehenden Kompatibilitätsanforderungen haben, sollten Sie sich für LESS entscheiden.
Hier ist warum
Ein Wort, Node.js! Es ist eine Full-Stack-JavaScript-Plattform. Ich will nicht angeben, aber ich sage das gerne: Anstatt serverseitige Sprachen wie PHP, Python, Perl, ASP, JSP usw. zu verwenden, verwendet es dasselbe JavaScript. Vorteile: Es ist asynchron (mehr dazu später) und nicht blockierend (all die genannten serverseitigen Sprachen sind blockierend), beides führt zu Skalierbarkeit. Ja, es ist serverseitiges JavaScript, das E/A durchführen kann und nicht blockierend ist.
Sie könnten sagen, dass aktuelle große Websites, die blockierende serverseitige Sprachen verwenden, ebenfalls skalierbar sind. Ja, das sind sie, aber um das zu erreichen, müssen sie ausgezeichnetes Netzwerkdesign und viel Hardware (und asynchrone Server wie Nginx) einbringen. Selbst dann bezweifle ich, dass sie mobile Verbindungen/Clients immer noch gut handhaben können. Und Node.js kann und ist mit Blick auf Mobilgeräte konzipiert. Es gibt Dinge, für die Node.js natürlich nicht ausgelegt ist.
Zurück zu LESS vs SASS: LESS ist in JavaScript geschrieben und wird über LESS.js in Node.js integriert. SASS ist in Ruby geschrieben. Im Wesentlichen sage ich, wenn Sie langfristig denken (d. h. mobil), wählen Sie LESS. Aber wenn Sie bereits Ruby on Rails oder Ähnliches verwenden, entscheiden Sie sich für SASS.
ps. Ich bin kein Webentwickler, sondern komme aus dem Bereich Netzwerke/Server/Datenbanken. Und ich arbeite an einem Projekt, das traditionelle und mobile Clients unterstützt.
Update zu meinem vorherigen Kommentar
Meine zusätzliche Recherche zeigt, dass SASS mit Node-Installation unterstützt wird, d. h. die libsass C-Bibliothek. Hier ist ein Link: http://benfrain.com/lightning-fast-sass-compiling-with-libsass-node-sass-and-grunt-sass/
Also kann SASS mit Node verwendet werden. Dennoch halte ich an meiner ursprünglichen Entscheidung fest, nicht aus Ego, sondern aus folgenden Gründen:
1. libsass bedeutet, dass Sie Ruby in Node einbetten, damit SASS darunter ausgeführt werden kann.
1.1 Dies führt zu Versionsproblemen. libsass wird dem Ruby-Compiler hinterherhinken. Funktionen, die mit dem neuesten Ruby-Compiler unterstützt werden, werden mit libsass möglicherweise nicht unterstützt.
1.2 Aufgrund des SASS-Frameworks, das Sie verwenden, können andere Versionsprobleme auftreten.
Node.js ist nativ JavaScript. Das bedeutet, wenn Sie LESS verwenden, wird es direkt in das Node.js-Ökosystem integriert. Und moderne mobile Geräte unterstützen JavaScript über mobile Versionen moderner Browser.
2.1 Stellen Sie sich vor, Sie verwenden SASS. Das bedeutet, dass mobile Clients das Layout (.css) nicht mehr auf dem Laufenden ändern können, ohne eine Verbindung zu Node-Servern (wo libsass residiert) herzustellen. Mit anderen Worten, Sie können Ruby-Code nicht direkt auf Client-Geräten einfügen.
Ein Update Ihres SASS-Codes bedeutet (Neu-)Kompilierung Ihres Codes über libsass, das in Node eingebettet ist. Dies führt zu zusätzlichen Schritten und zumindest zu Latenzen.
Wenn Sie sich die Designphilosophie von Node.js ansehen, ist es eine Sprache auf Client- und Serverseite. Wenn Sie Ruby in Node ziehen (auch über libsass), kehren Sie zum traditionellen Paradigma zurück, bei dem die serverseitige Programmierung mit einer anderen Sprache erfolgt. Nun, ich vermute, vieles im Node-Ökosystem basiert auf dieser Annahme einer einzigen Sprache. Wer weiß, welche Probleme Ihnen begegnen, wenn Sie SASS verwenden.
Das ist alles größtenteils bedeutungslos, da die meisten Projekte, die SASS oder LESS verwenden, den kompilierten Code im Voraus generieren und speichern. Normalerweise als Teil des Build-Prozesses, aber gelegentlich auch als Teil einer serverseitigen Routine. Blockieren ist also nie ein Problem und die meiste Zeit spielen auch Bibliotheksversionen keine Rolle.