Der folgende Text ist ein Gastbeitrag von Andrey Sitnik, dem Ersteller des Autoprefixer-Tools, einem „Postprozessor“ für die Handhabung von Vendor-Präfixen in CSS. Warum dieses Tool anstelle Ihres Präprozessors oder eines anderen Tools verwenden? Viele Gründe. Andrey wird es erklären.
Autoprefixer parst CSS-Dateien und fügt CSS-Regeln Vendor-Präfixe hinzu, wobei die Can I Use-Datenbank verwendet wird, um zu bestimmen, welche Präfixe benötigt werden.
Alles, was Sie tun müssen, ist es zu Ihrem Asset-Build-Tool hinzuzufügen (z. B. Grunt), und Sie können CSS-Vendor-Präfixe komplett vergessen. Schreiben Sie einfach reguläres CSS gemäß den neuesten W3C-Spezifikationen ohne Präfixe. So:
a {
transition: transform 1s
}
Autoprefixer verwendet eine Datenbank mit der aktuellen Browser-Popularität und der Unterstützung von Eigenschaften, um Präfixe für Sie anzuwenden.
a {
-webkit-transition: -webkit-transform 1s;
transition: -ms-transform 1s;
transition: transform 1s
}

Das Problem
Wir können natürlich Vendor-CSS-Präfixe von Hand schreiben, aber das kann mühsam und fehleranfällig sein.
Wir können Dienste wie Prefixr und Texteditor-Plugins verwenden, aber es ist immer noch anstrengend, mit großen Blöcken wiederholenden Codes zu arbeiten.
Wir können Mixin-Bibliotheken mit Präprozessoren wie Compass für Sass oder nib für Stylus verwenden. Sie lösen viele Probleme, schaffen aber andere Probleme. Sie zwingen uns, eine neue Syntax zu verwenden. Sie iterieren viel langsamer als moderne Browser, sodass eine stabile Veröffentlichung viele unnötige Präfixe enthalten kann, und manchmal müssen wir unsere eigenen Mixins erstellen.
Und Compass verbirgt die Präfixe nicht wirklich vor Ihnen, da Sie sich immer noch mit vielen Fragen auseinandersetzen müssen, zum Beispiel: Muss ich einen Mixin für border-radius schreiben? Muss ich Argumente für +transition durch Kommas trennen?
Lea Verou's -prefix-free kam der Lösung dieses Problems am nächsten, aber die Verwendung von clientseitigen Bibliotheken ist keine gute Idee, wenn man die Leistung für Endbenutzer berücksichtigt. Um dieselbe Arbeit immer wieder zu vermeiden, ist es besser, CSS einmal zu erstellen: während des Asset-Builds oder der Projektbereitstellung.
Im Detail
Anstatt ein Präprozessor – wie Sass und Stylus – zu sein, ist Autoprefixer ein Postprozessor. Er verwendet keine spezifische Syntax und arbeitet mit gängigem CSS. Autoprefixer lässt sich leicht in Sass und Stylus integrieren, da er läuft, nachdem CSS bereits kompiliert wurde.
Autoprefixer basiert auf Rework, einem Framework zum Schreiben eigener CSS-Postprozessoren. Rework parst CSS in eine nutzbare JavaScript-Struktur und exportiert es nach Ihren Manipulationen wieder als CSS.
Jede Version von Autoprefixer enthält eine Kopie der neuesten Can I Use-Daten.
- Liste aktueller Browser und deren Popularität.
- Liste der benötigten Präfixe für neue CSS-Eigenschaften, Werte und Selektoren.
Standardmäßig unterstützt Autoprefixer die 2 neuesten Versionen der wichtigsten Browser, ähnlich wie Google. Sie können jedoch wählen, welche Browser in Ihrem Projekt unterstützt werden, nach Namen (wie „ff 21“) oder nach Muster.
- Die letzten 2 Versionen jedes wichtigen Browsers unter Verwendung von „last 2 versions“.
- Mit mehr als 1 % der globalen Nutzungsstatistik unter Verwendung von „> 1%“.
- Nur neuere Versionen von „ff > 20“ oder „ff >= 20“.
Dann berechnet Autoprefixer, welche Präfixe benötigt und welche veraltet sind.
Wenn Autoprefixer Präfixe zu Ihrem CSS hinzufügt, vergisst es nicht, Syntaxunterschiede zu beheben. Auf diese Weise wird CSS gemäß den neuesten W3C-Spezifikationen erzeugt.
a {
background: linear-gradient(to top, black, white);
display: flex
}
::placeholder {
color: #ccc
}
kompiliert zu
a {
background: -webkit-linear-gradient(bottom, black, white);
background: linear-gradient(to top, black, white);
display: -webkit-box;
display: -webkit-flex;
display: -moz-box;
display: -ms-flexbox;
display: flex
}
:-ms-input-placeholder {
color: #ccc
}
::-moz-placeholder {
color: #ccc
}
::-webkit-input-placeholder {
color: #ccc
}
::placeholder {
color: #ccc
}
Autoprefixer bereinigt auch veraltete Präfixe (aus Legacy-Code oder CSS-Bibliotheken wie Bootstrap), sodass der folgende Code
a {
-webkit-border-radius: 5px;
border-radius: 5px
}
kompiliert zu
a {
border-radius: 5px
}
Nachdem Fotorama von Compass auf Autoprefixer umgestellt hat, ist die Größe der CSS-Datei um fast 20 % gesunken. Nach Fotorama, dem Wechsel von Compass zu Autoprefixer, ist die CSS-Dateigröße gesunken um fast 20 %.
Demo
Wenn Sie immer noch kein Werkzeug zur Automatisierung des Erstellens Ihrer Assets verwenden, sollten Sie sich Grunt ansehen. Ich empfehle dringend, Build-Tools zu verwenden. Dies kann Ihnen eine ganz neue Welt von „Zucker“-Syntaxen, zeitsparenden Mixin-Bibliotheken und nützlichen Bildbearbeitungswerkzeugen eröffnen. Alle Produktivitätsmethoden für Entwickler, um viel Nerven und Zeit zu sparen (die Freiheit, Sprachen zu wählen, Code-Wiederverwendung, die Möglichkeit, Drittanbieterbibliotheken zu nutzen), stehen Frontend-Programmierern jetzt zur Verfügung.
Erstellen wir ein Projektverzeichnis und schreiben einfaches CSS in style.css.
a { }
Für dieses Beispiel verwenden wir Grunt. Zuerst müssen wir grunt-autoprefixer mit npm installieren.
npm install grunt-cli grunt-contrib-watch grunt-autoprefixer
Dann sollten wir Gruntfile.js erstellen und Autoprefixer aktivieren.
module.exports = function (grunt) {
grunt.initConfig({
autoprefixer: {
dist: {
files: {
'build/style.css': 'style.css'
}
}
},
watch: {
styles: {
files: ['style.css'],
tasks: ['autoprefixer']
}
}
});
grunt.loadNpmTasks('grunt-autoprefixer');
grunt.loadNpmTasks('grunt-contrib-watch');
};
Diese Konfiguration ermöglicht die Kompilierung von style.css nach build/style.css mit Autoprefixer. Außerdem verwenden wir grunt-contrib-watch, um build/style.css jedes Mal neu zu kompilieren.wenn sich style.css ändert.
Lassen Sie uns Grunts Watch starten.
./node_modules/.bin/grunt watch
Nun fügen wir einen CSS3-Ausdruck zu style.css hinzu und speichern die Datei.
a {
width: calc(50% - 2em)
}
Die Magie ist gerade passiert und jetzt haben wir eine Datei build/style.css. Grunt hat die Änderung in style.css erkannt und die Autoprefixer-Aufgabe gestartet. Autoprefixer hat den calc()-Wert gefunden, der einen Präfix für Safari 6 benötigt.
a {
width: -webkit-calc(50% - 2em);
width: calc(50% - 2em)
}
Jetzt fügen wir etwas komplexeres CSS3 zu style.css hinzu und speichern die Datei.
a {
width: calc(50% - 2em);
transition: transform 1s
}
Autoprefixer weiß bereits, dass Chrome, Safari 6 und Opera 15 Präfixe für transition und transform benötigen. Aber IE 9 benötigt auch einen Präfix für transform, den wir als Wert in transition verwendet haben.
a {
width: -webkit-calc(1% + 1em);
width: calc(1% + 1em);
-webkit-transition: -webkit-transform 1s;
transition: -ms-transform 1s;
transition: transform 1s
}
Autoprefixer ist darauf ausgelegt, die ganze Drecksarbeit für Sie zu erledigen. Es überprüft die Can I Use-Datenbank, schreibt alle benötigten Präfixe und versteht auch den Unterschied zwischen Spezifikationen. Willkommen in der Zukunft von CSS3 – keine Vendor-Präfixe mehr!
Was als Nächstes?
- Autoprefixer unterstützt Ruby on Rails, Middleman, Mincer, Grunt, Sublime Text. Erfahren Sie mehr darüber, wie Sie es mit Ihrer Umgebung verwenden können, in der Dokumentation.
- Wenn Ihre Umgebung Autoprefixer noch nicht unterstützt, melden Sie dies bitte hier, und ich werde versuchen zu helfen.
- Folgen Sie @autoprefixer für Informationen zu Updates und neuen Funktionen.
Das ist großartig. Ich vergesse immer mindestens einen Vendor-CSS-Präfix, daher wäre es sehr nützlich, dies zu haben.
Würde es auch Präfixe für ältere IE-Versionen hinzufügen, wie es Compass tut http://compass-style.org/reference/compass/css3/images/#mixin-filter-gradient
Ich denke, Mixins sind in solchen Fällen der „richtige Weg“, schreibe einfach mehrere Mixins und lege sie für dich selbst in eine Bibliothek.
IE-Hacks sind nicht für jeden die beste Idee, da alte IEs auf alten Maschinen laufen und diese Hacks sehr langsam sind. Zum Beispiel bevorzuge ich Graceful Degradation. Mixins sind also besser für diese Aufgabe. Oder Sie können einen weiteren Postprozessor schreiben (es ist wirklich sehr einfach mit Rework), um diese Hacks hinzuzufügen.
Ich liebe Autoprefixer. Ich benutze es jetzt seit ein paar Monaten für kleine Projekte (für große benutze ich Sass auf Compass) und es ist so eine Zeitersparnis! Ich benutze das Sublime Text 2 Plugin, aber ich hatte keine Ahnung, dass es auch als Grunt Plugin erhältlich ist!
Toller Beitrag, danke für die Tipps :)
Danke Sara Soueidan für Ihr Feedback zu Ihrer Erfahrung mit Autoprefixer. Tatsächlich habe ich nach einer erfahrungsbasierten Rezension gesucht, nicht nur nach einer Werbeaktion. Zuverlässige Zeitsparer sind in meinem Haus ebenfalls sehr willkommen.
Danke, dass Sie mir bei meiner Entscheidung geholfen haben.
Schön! Ich liebe auch die Tastenkombination Command-Control-X in Sublime Text 2!
Ich habe mir gerade gesagt: „Ich benutze Sass/Compass. Das reicht. Habe einen guten Workflow. Brauche im Moment nichts Neues.“
...aber dann habe ich gesehen, dass es ein Plugin für Sublime Text gibt.
„Okay. Nimm mein Geld“.
Wenn Sie Sass und Compass verwenden, versuchen Sie, Autoprefixer mit Build-Tools (Rails, Grunt) zu verwenden. Es ist schwierig, Ihr geprägtes CSS nach dem Sublime Text-Plugin zu lesen und zu bearbeiten.
Das bestätigt definitiv wieder einmal, dass Browserentwickler nicht aus der Vergangenheit lernen. Es ist ärgerlich, dass wir den Browser immer mit kniffligen Tools „reparieren“ und um Standards herumhacken müssen (die derzeit gut definiert sind). Zuerst bedingte Kommentare, dann CSS-Hacks, jetzt CSS-Compiler und CSS-Fixer, die sich auch in die Compiler einklinken. Unglaublich, Browser werden immer „Beta“-Produkte sein.
Trotzdem ein großartiges Werkzeug.
Mark, wenn ich mich richtig erinnere, verwenden Browser den Vendor-Präfix, weil die jeweilige CSS-Eigenschaft im Grunde in einer „Beta“-Form für diesen Browser (Version) ist, und sobald sie der Meinung sind, dass sie korrekt implementiert wurde, lassen sie den Browser die ungeprägste Syntax erkennen. Hin und wieder werden Sie feststellen, dass Sie den Präfix nicht mehr benötigen, wie z. B. „border-radius“, für die neuesten Versionen.
Ich liebe das. Ich werde mich nie wieder um Vendor-Präfixe kümmern müssen.
Ist es möglich, es in einen Compass (Foundation)-Workflow zu integrieren, damit ich nicht Compass *und* Grunt ausführen muss? Ich habe das Gefühl, dass ich nah dran bin, autoprefixer-rails und die 'on_stylesheet_saved'-Funktion von Compass in meiner config.rb zu verwenden, aber bisher war ich erfolglos.
Vielleicht ist es besser, Sass-Kompilierung in Middleman auszuführen (es hat bereits Autoprefixer-Unterstützung). Vielleicht können wir Autoprefixer zu Compass Foundation hinzufügen, aber es wäre eine etwas hacky Methode :(.
Übrigens, Middleman (und andere Build-Tools wie Scout) sind viel leistungsfähiger als Compass.
Ich versuche, eine Lösung für Compass bald zu README.md hinzuzufügen.
Erledigt. Autoprefixer README hat jetzt einen Abschnitt zur Integration mit Compass.
require ‘autoprefixer-rails’
on_stylesheet_saved do |file|
css = File.read(file)
File.open(file, ‘w’) { |io| io << AutoprefixerRails.compile(css) }
end
https://github.com/ai/autoprefixer#javascript
„Sie können Autoprefixer im Browser verwenden“
Könnte mir jemand erklären, wie das gemacht wird? CSS in ein Browserfenster laden und als Bookmarklet ausführen? Von einer Webseite ausführen, die Ihr CSS enthält?
Ich mache viele Projekte, bei denen mein Workflow vorschreibt, dass ich eine CSS-Datei ändere und dann auf den Server hochlade.
Autoprefixer hat derzeit keine Tools für Endbenutzer, die im Browser funktionieren. Wenn Sie standalone JS hinzufügen, erstellt es einfach die Funktion
window.autoprefixer.compile(), und Sie müssen sie manuell aufrufen :(.Versuchen Sie, das Autoprefixer-Plugin für Sublime Text zu verwenden, oder versuchen Sie, Grunt (oder etwas Ähnliches) in Ihren Workflow zu integrieren (da es viele coole Tools gibt).
Danke Andrey. Ich schätze es sehr, dass Sie dieses Tool entwickelt und es kostenlos veröffentlicht haben. Ich wünschte mir, es gäbe eine direktere Möglichkeit, es zu nutzen, als mehrere Kommandozeilentools zu installieren oder zu einem anderen Texteditor zu wechseln.
Haben Sie in Erwägung gezogen, es als Webdienst wie Prefixr anzubieten? http://prefixr.com
Leider gefiel mir die Idee mit Webdiensten (und Texteditor-Plugins) nicht. Sie verarbeiten Ihr CSS nur einmal, dann vergessen Sie Ihre Dateien und sie werden veraltet. Präfixe werden nur nach wenigen Monaten veraltet sein. Wenn neue Browser eine Eigenschaft unterstützen, werden Sie keine neuen Präfixe hinzufügen.
Wenn Sie ein Build-Tool verwenden, müssen Sie nur Ihre Bibliotheken aktualisieren (mit einem einzigen Befehl wie
bundle updateodernpm update), und Sie können sicher sein, dass all Ihre Stile aktuell sind.Aber Sie können diese Webdienste erstellen, wenn Sie möchten (einfacher Weg, um Respekt und Popularität in der Community zu gewinnen, wie andere Entwickler von Autoprefixer-Plugins).
Gibt es eine Möglichkeit, es unter CodeKit zum Laufen zu bringen?
Noch nicht, aber Sie können dieses Problem unterstützen: https://github.com/bdkjones/CodeKit/issues/653
Wie Bryan sagt, wird es hinzugefügt werden.
Hat das schon jemand ausprobiert? http://leaverou.github.io/prefixfree/
Leas -prefix-free ist ein cooles Tool und eine gute Variante, wenn Sie ein Asset-Build-Tool verwenden können. Aber es funktioniert nur im Browser und ist sehr schlecht für die Leistung des Kunden, da es CSS in den Browsern der Endbenutzer verarbeitet, anstatt CSS einmal beim Bereitstellen zu verarbeiten.
Sehr schönes Werkzeug Andrey. Tolle Arbeit.
Was Prefixfree angeht… Ich habe es bereits in einigen Projekten verwendet und keine Leistungsprobleme bemerkt. Gibt es ein Diagramm oder einen Benchmark, das diese „schlechte Client-Leistung“ zeigt?
Das Leistungsproblem liegt im CSS. Der Benutzer kann Ihre Seite nicht sofort sehen, da das CSS der Seite erst nach der JS-Arbeit bereit ist. Aber leider gibt es keine Benchmarks (es ist nicht so einfach, den CSS-Ladevorgang zu benchmarken).
Berücksichtigt Autoprefixer Dinge wie Legacy-Linear-Gradients und Radial-Gradients mit bestimmten Winkeln, die drastisch unterschiedlich sind, basierend auf denselben Werten?
Ja, Autoprefixer kann mit Ziffern rechnen und die Syntax sehr flexibel ändern.
Aber glauben Sie mir nicht und schauen Sie sich die Tests an :) von → zu
Hallo Andrey,
das scheint das Werkzeug zu sein, nach dem ich lange gesucht habe. Gibt es eine einfache Anleitung, wie man das unter Mac OS installiert und startet? Ich habe gerade die Readme auf GitHub gelesen, aber ich habe keine Ahnung, wie ich anfangen soll, mit diesem Zeug von Kommandozeilen und so weiter …
Sie müssen Homebrew installieren, dann Node.js und npm. Versuchen Sie dieses gute Anleitung auf Changelog.
Mit npm können Sie Grunt und Autoprefixer gemäß der Anleitung aus diesem CSS Tricks-Artikel installieren.
Es ist interessant, dass Flexbox im Beispiel verwendet wurde. Wie würde das funktionieren, wenn alte und neue Versionen von Flexbox gemischt werden? Würde es veraltete, aber benötigte Präfixe entfernen?
Autoprefixer entfernt veraltete Flexbox-Eigenschaften (aber es gibt derzeit ein Problem, dass der Präfix der -webkit- 2009er Spezifikation für Autoprefixer nicht veraltet ist).
Außerdem werden Ihre Präfixe nicht doppelt vorhanden sein.
Verstehe ich Ihre Frage richtig? :)
Ich habe Flexbox noch nicht wirklich benutzt, aber meine Frage basiert auf der Idee, eine Mischung aus alten und neuen Flexbox-Spezifikationen zu verwenden, wie hier gepostet: https://css-tricks.de/using-flexbox/
Ich versuche nicht, eine Bremse für eine offensichtlich großartige Idee zu sein, nur neugierig!
Ja, Autoprefixer behebt die Spezifikationen für Sie. Sie schreiben CSS nur nach der neuesten W3C-Spezifikation ohne Präfixe und vergessen andere Flexbox-Spezifikationen. Autoprefixer schreibt die Eigenschaften für alle alten Spezifikationen neu.
Wow. Das steht ziemlich hoch auf der Awesome-Skala!
Können wir nicht einfach SCSS und Bourbon.io verwenden?
Das würde erfordern, dass Sie Ihre Mixins jedes Mal aktualisieren, wenn sich ein Präfix ändert.
Weil Sie immer darüber nachdenken müssen, wo Sie ein Mixin verwenden und wo nicht. Auch der Entwicklungszyklus von Bourbon ist viel langsamer als die Browser-Updates. Sehen Sie sich alle Punkte zu Compass im Artikel an, sie sind dieselben wie bei Bourbon.
Schön!
Danke Chris.
Oh! Entschuldigung…
Danke Andrey :)
Ich habe noch nie einen Autor gesehen, der seinem Beitrag so gefolgt ist und alle Fragen beantwortet hat. Ihr CSS Postprocessor Tool sieht sicherlich cool aus. Ich werde seine Entwicklung definitiv ausprobieren und genau verfolgen.
Ich möchte nur sagen: Danke Andrey, dass Sie es uns zur Verfügung stellen.
Toller Artikel, aber es gibt etwas, das ich ändern würde. Wenn Sie Grunt installieren (
npm install grunt-cli ...), installieren Sie es nicht global.Generell ist es besser, Grunt global zu installieren (mit
npm install -g grunt-clistattdessen), da dies verhindert, dass Sie auf die Grunt-Installation Ihres lokalen Projekts verweisen müssen (wie Sie es hier tun, mit./node_modules/.bin/grunt watch).Guter Artikel, ich freue mich, dass sich das Grunt-Ökosystem erweitert, um Werkzeuge zur Erleichterung unseres Lebens einzuschließen. Danke Andrey.
Und was machen Sie, wenn ein Projekt eine Version eines npm-Pakets benötigt und ein anderes Projekt eine andere Version benötigt?
In der Ruby-Welt verwenden wir Bundler, das Bibliotheken für jedes Projekt sperrt. Ich versuche also, diesen Weg auch in Node zu gehen. Ich speichere alle Projektabhängigkeiten innerhalb des Projektverzeichnisses (aber natürlich nicht in Git).
Aber Ihr Weg ist auch möglich :)
Andrey,
grunt-clisollte global installiert werden, es ist nur ein CLI-Tool, undgruntwird lokal als Peer-Abhängigkeit installiert.Hat jemand ein funktionierendes Beispiel für einen Gruntfile.js mit Autoprefixer *und* Livereload?
Ich bekomme sie nicht dazu, zusammen zu arbeiten. Autoprefixer startet einfach nicht, wenn Livereload aktiv ist.
Mein Gruntfile.js: https://gist.github.com/sdvg/f0a881cfc0ae9e412e01
Ich habe diesen gruntfile nicht von Grund auf neu erstellt, daher verstehe ich nicht unbedingt alles daran (ich habe ihn aus einer bereits funktionierenden Datei entlehnt und angepasst), aber Autoprefixer scheint hier für mich zu funktionieren. Ich benutze grunt-regarde, um auf Änderungen zu warten, was ein Unterschied sein könnte. Hier ist der gruntfile (Coffeescript-Syntax).
https://github.com/byuweb/byu-responsive-dev/blob/eb4a269cbcd2df8d982b39db8bbd34b6ebee75e9/Gruntfile.coffee
Großartige Arbeit. Ich bin beeindruckt von dem Werkzeug und auch von der Vielfalt der Implementierungen für verschiedene Umgebungen.
Ich benutze Grunt, um mein CSS zu erstellen, kompiliere aus .scss-Dateien und verwende viel Compass im SASS. Ich hatte ein paar Fragen.
Komprimierte Ausgabe – Die nachbearbeiteten CSS-Dateien werden nach der Verarbeitung durch Autoprefixer tatsächlich etwas größer, da ich eine komprimierte Ausgabe von SASS verwende. Gibt es eine Möglichkeit, die komprimierte Ausgabe von Autoprefixer zu aktivieren?
Source Maps – Das scheint etwas schwieriger zu sein. Ich lasse SASS Source Maps zusammen mit CSS ausgeben, damit ich die .scss-Quellen in den Chrome-Entwicklertools sehen kann (anstatt nur die CSS-Datei als Quelle anzuzeigen). Das ist unglaublich hilfreich. Die Verarbeitung durch Autoprefixer nach dem Kompilieren von Sass ruiniert die Quellzuordnung völlig. Ich kann mir keine Möglichkeit vorstellen, das zu umgehen. Irgendwelche Gedanken?
Sass ist keine gute Methode, um CSS zu komprimieren. Versuchen Sie csso: https://github.com/t32k/grunt-csso
Source Map ist sehr wichtig, aber es erfordert viele Änderungen am Parser. Bitte unterstützen Sie dieses Problem: https://github.com/visionmedia/rework/issues/109
Ich hatte sehr gemischten Erfolg mit Source Maps. Ich habe schließlich eine bestimmte Version von Sass und Compass gefunden, die zu funktionieren schienen, dann machten nach 24 Stunden die neuesten Chrome Canary-Updates die Dinge extrem instabil, sodass ich einfach aufgegeben habe. Hoffentlich werden Source Maps bald in eine Nicht-Beta-Version von Sass aufgenommen.
Ich werde mir Autoprefixer ansehen, danke Andrey. Grunt scheint auch ziemlich nett zu sein, aber dann liebe ich es, die Kommandozeile nicht mit compass.app verwenden zu müssen.
@Patrick, ich stimme zu, dass Quellzuordnungen eine Qual sein können. Ich habe auch eine Vorabversion von SASS dafür verwendet, konnte aber bei regelmäßigem Chrome statt Canary bleiben. Ich hoffe auch, dass SASS-Quellzuordnungen bald in eine Vollversion aufgenommen werden. Bis dahin ist die Bequemlichkeit von Quellzuordnungen genug für mich, um ein wenig Schmerz zu ertragen.
@Patrick: Quellzuordnungsunterstützung für SASS ist bereits in Chrome Stable vorhanden und das seit zwei Monaten!
Compass/Sass zwingen Sie nicht, die Transition-Syntax auf die Verwendung von Kommas umzustellen, das ist die Schönheit davon gegenüber Less. Anstatt „transition: width 1s ease“ schreiben Sie „@include transition(width 1s ease)“.
Bitte aktualisieren Sie den Artikel und korrigieren Sie den Fehler.
Es besagt nicht, dass Sie es tun müssen, es deutet darauf hin, dass Sie darüber nachdenken müssen, ob Sie es tun müssen oder nicht, anstatt nicht darüber nachdenken zu müssen.
Meine Idee ist, dass früher Kommas und andere Mixins Kommas benötigten. Sie müssen also überlegen, ob ich Kommas in
transitionbenötige oder nicht? Ich habe viel falschen Sass-Code mit Kommas gesehen.Bei Ihren Kursen fragt ein Entwickler, warum sein Sass-Code nach einem Compass-Update kaputt war oder warum seine Transition nicht funktioniert.
Das stimmt nicht, Sie müssen nicht über Kommas in irgendeinem Mixin nachdenken, das Präfixe hinzufügt. Alle Mixins, die Präfixe hinzufügen, werden exakt gleich verwendet: anstelle von
property: some rules, some other rules;
schreiben Sie
@include property(some rules, some other rules);
Sie fügen einfach @include hinzu und verwenden Klammern anstelle eines Doppelpunkts. Aber der Wert wird Zeichen für Zeichen exakt gleich geschrieben. Wer es anders macht, macht es falsch.
Ich stimme zu, dass Autoprefixer es Ihnen ermöglicht, nicht einmal darüber nachzudenken, aber das ändert nichts daran, dass Sie die Compass-Nutzung als viel schwieriger beschrieben haben, als sie wirklich ist.
Ich verstehe Ihren Punkt. Aber ich bin ein Compass-Benutzer und denke manchmal darüber nach. Es wurde im Artikel so formuliert, also werde ich es nicht ändern.
Schönes Werkzeug Andrey. Sofort zu meinem Grunt-Workflow-Boilerplate hinzugefügt.
Danke, Kumpel!
Andrey, das ist absolut großartig. Wir werden daran arbeiten, das so schnell wie möglich in Jeet zu implementieren. Chapeau.
Wir haben dies standardmäßig in Jeet integriert, und Jeff Escalante hat es in ein großartiges eigenständiges Stylus-Plugin verwandelt: https://github.com/jenius/autoprefixer-stylus
Jetzt können Sie es mit Stylus wie folgt verwenden und damit 90 % der Funktionalität von Präprozessorbibliotheken effizient ersetzen.
npm install -g autoprefixer-stylusstylus -u autoprefixer-stylus -w