Warum erstellen Browser Herstellerpräfixe für CSS-Eigenschaften?

73

Vielleicht ist es eine offensichtliche Antwort, aber

Warum um alles in der Welt sollten Browser beschließen, ihre eigenen Herstellerpräfixe für border-radiusund dergleichen zu erstellen ?

Ich meine: Warum muss ich tippen:

-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;

Liegt es daran, dass jede Plattform dachte: "Wir sind cool, wir werden einen besseren Weg finden, um abgerundete Ecken zu machen?" Es scheint völlig und unerklärlich redundant, drei Zeilen für eine zu schreiben.

Naftuli Kay
quelle
14
"Liegt es daran, dass jede Plattform dachte 'Wir sind cool, wir werden einen besseren Weg finden, um abgerundete Ecken zu machen?'" Genau.
BoltClock

Antworten:

66

Dies liegt daran, dass die Funktionen von Anbietern implementiert wurden, bevor die Spezifikation ihre endgültige Release-Phase erreicht hat.

Die Herstellerpräfixe stellen sicher, dass es keine Konflikte mit sich ändernden Funktionen usw. gibt.

Ursprünglich bestand der Sinn der Herstellerpräfixe darin, Browserherstellern die Unterstützung experimenteller CSS-Deklarationen zu ermöglichen.

Nehmen wir an, eine W3C-Arbeitsgruppe diskutiert eine Rasterdeklaration (was übrigens keine so schlechte Idee wäre). Nehmen wir weiter an, dass einige Leute einen Entwurf einer Spezifikation erstellen, andere jedoch mit einigen Details nicht einverstanden sind. Wie wir wissen, kann dieser Prozess ewig dauern.

Nehmen wir weiter an, Microsoft beschließt als Experiment, das vorgeschlagene Raster zu implementieren. Zu diesem Zeitpunkt kann Microsoft nicht sicher sein, dass sich die Spezifikation nicht ändert. Anstatt dem CSS ein Raster hinzuzufügen, wird daher -ms-grid hinzugefügt.

Das Herstellerpräfix besagt: "Dies ist die Microsoft-Interpretation eines laufenden Vorschlags." Wenn sich die endgültige Definition des Rasters unterscheidet, kann Microsoft ein neues CSS-Eigenschaftsraster hinzufügen, ohne Seiten zu beschädigen, die von -ms-grid abhängen

Quelle .

Alex
quelle
Einverstanden. Es dauert einige Zeit, bis neue Ideen in der Internetwelt ratifiziert werden, sodass Sie alle möglichen interessanten Attribute erhalten. Einige Ideen werden nie ratifiziert, während andere nur von einer Handvoll Anbietern umgesetzt werden.
user978122
3
Ich möchte auch hinzufügen, dass einige CSS-Spezifikationen zwar inzwischen abgeschlossen sind, wir sie jedoch weiterhin für ältere Browser-Unterstützungen verwenden.
Th3Alchemist
16

Da dieser Beitrag alt ist, ist es wichtig zu erwähnen, dass die meisten Anbieter jetzt verstehen, dass diese Präfixe nur unnötigen doppelten Code erzeugen und die Situation, in der Sie 3 verschiedene CSS-Regeln angeben müssen, damit ein Effekt in allen Browsern funktioniert, unerwünscht ist.

Wie in diesem Glossar über Mozillas Sicht auf Herstellerpräfixe am 3. Mai 2016 erwähnt,

Browser-Anbieter versuchen nun, das Herstellerpräfix für experimentelle Funktionen zu entfernen. Sie stellten fest, dass Webentwickler sie auf Produktionswebsites verwendeten, den globalen Raum verschmutzten und es Außenseitern erschwerten, gute Leistungen zu erbringen.

Zum Beispiel mussten Sie vor einigen Jahren schreiben, um eine abgerundete Ecke auf eine Box zu setzen:

-moz-border-radius: 10px 5px;
-webkit-border-top-left-radius: 10px;
-webkit-border-top-right-radius: 5px;
-webkit-border-bottom-right-radius: 10px;
-webkit-border-bottom-left-radius: 5px;
border-radius: 10px 5px;

Aber jetzt, da Browser diese Funktion vollständig unterstützen, benötigen Sie wirklich nur die standardisierte Version:

border-radius: 10px 5px;
Raman Sahasi
quelle
Die Notwendigkeit von Herstellerpräfixen hat sich nicht wirklich geändert, da sich das W3C immer noch nicht schneller bewegt als jemals zuvor für die Veröffentlichung von CR-Spezifikationen. Abgesehen davon veranschaulicht Ihr Beispiel nicht wirklich etwas, das für die Behauptung im Zitat relevant ist: Die Tatsache, dass Sie heute nur die Standardeigenschaft + stattdessen + Präfixe für eine bestimmte Eigenschaft schreiben müssen, wird heute nicht von Browser-Anbietern verursacht 'nicht mehr die Präfixe verwenden', sondern durch das W3C, das die Eigenschaft standardisiert. In fast allen Fällen, wenn ein Browser ein Präfix unterstützt, hat er auch bereits die Standardeigenschaft.
TylerH