Wenn Sie CSS schreiben, müssen Sie fast sicher Vendor-Präfixe für einige Teile des Codes verwenden, den Sie schreiben, um die beste Browserunterstützung zu gewährleisten. Ob es sich um Präfix-Eigenschaften wie -prefix-transform, Präfix-At-Regeln wie @-prefix-keyframes oder Präfix-Werte wie -prefix-linear-gradient handelt, es ist eine tägliche Aufgabe für CSS-Autoren.
Es ist nicht nur Teil unserer Arbeit, es ist auch leicht, etwas zu vermasseln. Ich habe kürzlich eine Reihe von großen Websites durchgesehen, speziell nach kleinen, pedantischen CSS3-Fehlern gesucht, und ich konnte auf jeder Website, die ich mir angesehen habe, einen finden.
Wie schreiben wir also CSS, damit wir immer die richtigen Präfixe verwenden?
Manuell Author – Verweisen Sie auf CSS3Please
Manuelle Autorenschaft bedeutet, dass das CSS, das Ihre Websites in der Produktion („live“) verwenden, die CSS-Datei ist, die Sie selbst in einem Texteditor bearbeiten. Wenn Sie diesen Weg gehen, müssen Sie alle richtigen Vendor-Präfixe direkt in dieser bearbeiteten Datei selbst einfügen. Etwas mühsam und fehleranfällig, wie ich finde, aber wahrscheinlich das Szenario für die meisten Websites der Welt.
Wenn dies bei Ihnen der Fall ist, ist Ihre beste Wahl, auf eine aktuelle Ressource wie CSS3 please! zu verweisen. Sie können die Werte direkt auf dieser Website bearbeiten und sie kopieren und in Ihre eigenen Stylesheets einfügen.

Wenn Sie dies tun, liegt **die Verantwortung bei Ihnen**, die Dinge aktuell zu halten. Präfixe sind nicht mehr so flüchtig wie früher, aber ein Blick alle paar Monate ist auf jeden Fall angebracht.
Manuell Author – Nicht präfixen – Lassen Sie -prefix-free es clientseitig tun
Sie schreiben das CSS immer noch manuell, aber Sie verwenden nur die unpräfixierten Eigenschaften/Werte/At-Regeln. -prefix-free ist ein kleines JavaScript, das läuft, Ihren gesamten CSS-Code durchsieht und neue Stile mit den richtigen Präfixen zur Seite hinzufügt, falls erforderlich, um diese Stile funktionsfähig zu machen.
Dies ist ein heiliger Krieg. Es macht CSS-Dateien kleiner! Ja, aber es birgt das Risiko von Flackern von nicht-CSS3-elementen! Es erfordert JavaScript für Stile, das Überkreuzen der Ströme! Ja, aber es sind nur 2k! Es ist progressive enhancement vom Feinsten, da es aufhört zu präfixen, wenn Browser es nicht mehr benötigen!

Sie entscheiden.
Es ist auch erwähnenswert, dass die .css()-Methode von jQuery einiges an Präfixen für Sie erledigt.
$("body").css({
// Will NOT prefix
"background": "linear-gradient(#ccc, #666)",
// Doesn't need to, so won't
"box-shadow": "inset 0 0 5px black",
// WILL prefix
"transform" : "rotate(5deg)"
});
Ich bin normalerweise kein Fan davon, CSS über JavaScript anzuwenden, aber es ist gut zu wissen, da es immer Ausnahmen von den Regeln gibt.
Manuell Author – Korrigieren mit Prefixr
Wenn Sie die Präfixe nicht manuell authorn möchten, Ihr Workflow aber letztendlich manuell authornendes CSS bereitstellt, könnten Sie Ihr CSS vor dem Deployment durch Prefixr laufen lassen. Es parst im Grunde Ihr CSS, findet Dinge, die einen Präfix benötigen, und macht es für Sie.
Es ist sehr clever, da Sie kein CSS benötigen, das speziell ohne Präfixe auskommt (wie es -prefix-free erfordert). Wenn Sie zum Beispiel gerade einen der erforderlichen drei Präfixe vermissen, erkennt es das und fügt nur den fehlenden hinzu.

Es gibt auch Möglichkeiten, es in Workflows zu integrieren, über die Kommandozeile oder beliebte Texteditoren.
Preprocess – Mixins verwenden
Einer der Hauptgründe für die Verwendung von CSS-Präprozessoren ist die Hilfe bei Vendor-Präfixen.
Wenn Sie Sass verwenden, haben Compass oder Bourbon robuste Sets von CSS3-Mixins für Sie.

Wenn Sie LESS verwenden, habe ich ein Set davon oder Sie könnten sich diese Zusammenfassung ansehen, die einige andere vergleicht.
Manuell Author – Nicht präfixen – Post-Prozess mit Autoprefixer
Dies ist eine wirklich großartige Methode dafür. Alles ist in diesem Artikel beschrieben. Im Grunde vergessen Sie einfach das Präfixen und dieser Build-Schritt fügt die Präfixe für Sie hinzu, basierend auf den neuesten und besten Informationen von CanIUse.
„Don’ts“
Ein Fehler, den ich manchmal sehe, ist, dass Leute einfach alle wichtigen Präfixe für jede CSS3-Eigenschaft verwenden. Es scheint, dass sie eine generische Mixin haben, durch die sie alles laufen lassen, was die Präfixe aufklebt. Wenn Sie so etwas wie -o-border-radius gesehen haben, meine ich das. Das hat es nie gegeben und wird es nie in Ihr CSS geben müssen.
Ein weiterer Fehler ist, CSS veralten zu lassen. Wie ich bereits erwähnte, lohnt es sich, CSS, das älter als ein paar Monate ist, anzusehen, um sicherzustellen, dass es auf dem neuesten Stand ist. Wenn Sie etwas Veraltetes auf dieser Website sehen, lassen Sie es mich bitte wissen, und ich werde es sofort aktualisieren.
Ich denke, das beste Präprozessortool zur Behandlung von Präfixen ist NIB für die Verwendung mit Stylus. Sie benötigen keine spezielle Syntax wie diese hässlichen Compass-Mixins. Sie schreiben reines CSS und Stylus interpretiert es als Mixin und generiert die richtigen Präfixe
http://visionmedia.github.com/nib/
Compass-Mixins sind nicht so hässlich, stattdessen
-Sie tun-
immer noch sehr ähnlich
Das ist bei Bourbon genauso :P
Das ist interessant, wie NIB damit umgeht. Ich kann Argumente für beide Seiten sehen. Ich mag, wie einfach das wird. Einfach so: „sei schlau für mich, Computer!“ Einerseits ist es schön, explizit zu sein, wann man Computerhilfe will und wann nicht. @include ermöglicht diese Explizitheit.
Ich denke wirklich, es ist Zeit, mit dem Präfixen aufzuhören. Eine absolut irrationale nutzlose Sache
Tolle Werkzeuge. Es ist wirklich eine schmerzhafte Erfahrung und man vergisst oft irgendeinen Vendor-Präfix für Stile. Das Hand Author-Tool ist meine bevorzugte Methode, Dinge zu tun. Ich muss mich sowieso nicht darum kümmern :)
Ich dachte nicht, dass wir noch Präfixe (browser-spezifische Hacks) brauchen, nachdem ich gelesen habe: https://css-tricks.de/do-we-need-box-shadow-prefixes/
Ich bin ein großer Fan von Lea Verous prefixfree und seinen zugehörigen Plugins. Solange die Dinge generell so codiert sind, dass sie sich anmutig verschlechtern. In einer Umgebung ohne JavaScript befinden Sie sich wahrscheinlich auch in einer Umgebung, die Dinge wie Gradienten und Schatten, die mit CSS angewendet werden, sowieso nicht erkennt.
Prefixr sieht wie eine weitere großartige Lösung aus, aber ich habe es noch nicht benutzt. Vielleicht könnte ich prefixfree beim Codieren/Verwenden von Live-Reload verwenden und dann den Link entfernen und den CSS-Code einmal durch Prefixr laufen lassen, sobald die Codierung abgeschlossen ist.
Was ist mit
-ms-border-radius?Gibt es nicht.
Danke für diese Tipps!
Ich bin ein großer Fan von Prefixr, insbesondere weil ich die meiste meiner HTML- und CSS-Bearbeitung mit TextMate und Chrome mache und das Cross-Browser-Testing im Nachhinein durchführe. Auf diese Weise kümmere ich mich beim Codieren nur um Webkit-Präfixe und lasse Prefixr den Rest automatisieren, wenn ich bereit bin, in anderen Browsern zu testen.
Hey,
Danke, dass Sie -prefix-free erwähnt haben! Eine kleine Korrektur: -prefix-free erfordert nicht, dass Sie keine Präfixe verwenden. Wenn Sie etwas präfixen, wird es unverändert belassen, ohne es in irgendeiner Weise zu verändern.
Danke für die Klarstellung!
Für alle
Wenn Sie möchten, dass -prefix-free Ihnen beim Präfixen hilft, müssen Sie die Dinge unpräfixiert lassen.
Wenn Sie Ihre eigenen Präfixe kontrollieren möchten, tun Sie das, und -prefix-free wird sie nicht antasten.
Bedeutet das, dass ich sowohl Compass als auch dann -prefix-free verwenden könnte, um alles aufzufangen, was ich vergesse?
Zu diesem Zeitpunkt denke ich, dass CSS3 als Enhancement betrachtet werden sollte. Ich mag es nicht, ein Design voller Präfixe abzuliefern – das wahrscheinlich nie aktualisiert wird – und ich bin faul und möchte keine Websites aktualisieren, die ich selbst pflege. Deshalb bin ich ein so großer Fan von *prefix-free*. Vielen Dank, Lea.
Bevor ich von LESS zu SASS wechselte, schrieb ich meine eigenen Mixins oder fügte einige Snippets hinzu, die ich online gesammelt hatte. Da es keine Compass-Variante für LESS gibt, sind Sie der Hässlichkeit und dem Umfang ausgesetzt, den die Präfixe zu Ihrem CSS hinzufügen. Ich war konservativ in meiner Verwendung, weil ich mir bewusst war, was wirklich hinter den Kulissen vor sich ging.
Jetzt mit Compass muss ich nicht an die Hässlichkeit denken – es erledigt die schmutzige Arbeit. Es kauft die schweren Säcke und gräbt die Löcher in der Wüste von Nevada. Ich stelle keine Fragen mehr. Aber hin und wieder werfe ich einen Blick auf das kompilierte CSS und schaudere.
Letztendlich habe ich mich für den Weg des Komforts entschieden und lasse den Präprozessor es tun. Es eliminiert potenzielle Fehler beim selbstständigen Codieren, und zumindest versucht Compass, nur die Präfixe zu implementieren, die in realen Umständen wirklich notwendig sind, und nicht nur jedes denkbare Präfix anzuhängen, wie Ihre „Don’ts“ ergaben. Sie müssen nur sicherstellen, dass Sie Compass auf dem neuesten Stand halten.
Eines Tages (wahrscheinlich nie) werde ich diese Wahl überdenken und wieder den Komfort wählen.
Ausgezeichnet, wie immer!
Was ich nicht verstehe ist, warum Sass und LESS Mixins benötigen, um die Präfixe hinzuzufügen. Es wäre viel besser gewesen, Standard-CSS schreiben zu können und die erforderlichen Präfixe automatisch hinzufügen zu lassen.
Eine Anmerkung zu CSS3Please: Sie haben die Unterstützung für IE8 (das immer noch von etwa 10 % der Benutzer verwendet wird) eingestellt, also behalten Sie das im Hinterkopf.
Das ist interessant, dass IE 8 fallen gelassen wurde, danke für den Hinweis.
Aber Vorsicht: Basieren Sie Ihre Entscheidungen nicht auf irgendwelchen „10 %“, die Sie irgendwo lesen. Die einzigen Statistiken, auf deren Grundlage Sie jemals Entscheidungen treffen sollten, sind Statistiken, die Sie von Ihrer eigenen Website gesammelt haben.
Meinen Sie, dass CSS3Please die Unterstützung für IE8 eingestellt hat oder dass die von ihnen ausgegebenen Präfixe die Unterstützung für IE8 eingestellt haben? Unter der Annahme, dass es ersteres ist, wen interessiert's? Ich finde es SEHR schwer zu glauben, dass 10% ihrer Statistiken IE8 sind.
Zu „Don’ts“ – Ich denke, Sie *sollten* Präfixe für potenziell kommende Eigenschaften hinzufügen, d.h. als Opera
border-radiusüberhaupt nicht unterstützte, hätte-o-border-radiusauf jeden Fall für die zukünftige Verwendung aufgenommen werden sollen.Da bin ich definitiv anderer Meinung. Diese präfixierte Eigenschaft hat nie existiert und wird nie existieren. Sie wegen der Annahme aufzunehmen, dass sie es eines Tages geben könnte, ist eine seltsame Vorab-Optimierung, die ich nicht unterstützen kann.
Ich denke, wenn Sie ein kleines Projekt haben, kann ein einfaches Mixin, das jede CSS3-Eigenschaft mit allen Vendors präfigiert, in Ordnung sein. Wie das, das in inuit.css verwendet wird
Das widerspricht mir einfach, das ist alles, was ich sagen kann.
Clearless ist eine ziemlich coole LESS-Mixin-Bibliothek. Sie behandelt das Präfix-Problem und viele andere coole Dinge.
Yep! -prefix-free ist super.
Ich benutze das Prefixr-Plugin für Sublime Text und es macht einen ziemlich guten Job dabei, fehlende Präfixe hinzuzufügen oder nicht mehr benötigte zu entfernen. Ich habe nie wirklich überprüft, ob es immer aktuell ist, aber es funktioniert wie beworben.
Ich muss Prefixr für ST2 unterstützen, ich benutze es häufig, zusammen mit LESS-Mixins.
Der Codestandard, wo ich arbeite – der viel Diskussion und Aktualisierung erfährt – verlangt alle wichtigen Präfixe für jede präfixierte Eigenschaft. Die Begründung ist, dass die sicherste und konsistenteste Abdeckung aller Basen die effizienteste Zeitnutzung ist und es wenig Nutzen bringt, Zeit darauf zu verwenden, welche Präfixe für eine bestimmte Eigenschaft aktuell erforderlich sind. Pragmatismus statt Vorab-Optimierung.
Was ist der Nutzen, diese Zeit dafür aufzuwenden? Ich glaube, ich muss hier etwas verpassen.
Bevor ich Compass lernte, benutzte ich viel CSS3 Please. Es war nicht so schlimm, weil ich CSS3 hauptsächlich für kleine Verbesserungen verwendete, die in älteren Browsern nicht wirklich fehlen würden. Jetzt verlasse ich mich auf die Compass-Mixins, nachdem ich es satt hatte, meine eigenen zu warten. In den seltenen Fällen, in denen ich wieder Vanilla-CSS schreibe, benutze ich das Prefixr Sublime Text-Plugin, um das zu regeln.
Wenn ich keine Vendor-Präfixe verwende, funktionieren box-shadow, border-radius usw. in Firefox, Chrome, Safari, IE9 für mich einwandfrei. Warum also damit herumärgern?
Das ist eine weitere Diskussion, denke ich, progressive enhancement ist eine Möglichkeit, aber eine Website prefix-cross-browser-kompatibel zu machen, ist eine andere.
Toller Artikel, danke Chris! Nachdem ich ihn gelesen hatte, wollte ich Prefixr ausprobieren, aber ich kann es nicht zum Laufen bringen, außer für den Standardcode, der dort angezeigt wird. Schade, denn es klingt nach einem fantastischen Werkzeug
OK, ich nehme das zurück, es stellte sich heraus, dass es nicht den oberen Teil meines Stylesheets behandelt. Also muss die erste Zeile ein tatsächlicher Stil sein.
Compass ist das Beste von allem, wenn Sie auch Kompatibilität mit Internet Explorer wünschen. Zum Beispiel
https://gist.github.com/4410998
Prefix-free und Prefixer können das nicht
Ich denke, ich werde mich für Prefixr entscheiden. Auch wenn Präprozessoren eine „einfachere Arbeitsweise“ sein mögen. Das gesagt, wenn man dazu neigt, sich auf „Magie“ zu verlassen, vergisst man vielleicht, wie man CSS3 richtig schreibt… Also mein Rat an Anfänger wäre: schreiben Sie alles aus, als wäre es Standard-CSS. Diejenigen, die die Tricks des Handwerks kennen, können es sich durch jeden Workflow, den sie wählen, leichter machen… Ich weiß nur, dass in 2 Jahren ein völlig anderer Ansatz zu dieser Zeit am besten sein könnte.
Gute Lektüre aber ;) ab zu Prefixr jetzt, um zu sehen, wie schlecht ich wirklich CSS-mäßig bin :d
Prefix-Free funktioniert aus irgendeinem Grund nicht, wenn es in WordPress implementiert wird.
Da ist etwas anderes im Gange. Ich versichere Ihnen, WordPress kümmert sich nicht darum, welche JavaScript-Sachen Sie in Ihrem Theme verwenden.
erster Beitrag sehr nützlich, den ich heute lese, NETTER JOB, BRO
ein Gruß
Diseño Web Colombia</ a>
Giuseppe Lidonnici