2010-03-06 4 views
26

Die Sache, die ich am meisten hasse in CSS3 ist, dass es immer zwei Eigenschaften gibt, die Sie setzen sollten, um einen Effekt zu machen. Ich denke, das ist nicht professionell, und erhöhen Sie die CSS-Größe. Zum Beispiel, warum sie -webkit-border-radius und -moz-border-radius in border-radiusWarum gibt es -moz-XXX und -webkit-XXX in der CSS3?

Stellen Sie sich vor nicht vereinigen, wenn wir 10 Browser haben, schreiben wir 10 Linien eine abgerundete Ecke Wirkung zu tun? Jeder kann es erklären?

Antwort

29

Es liegt daran, dass sie herstellerspezifisch sind. -webkit- und -moz- -vorgegebenen Eigenschaften sind nicht Standardeigenschaften. Dieser "Namespacing" ermöglicht es Anbietern, neue, coole Funktionen zu testen, und wenn sie groß sind, können sie in die Standards integriert werden. Dies ist, was mit CSS3 passiert: Mozilla und das Webkit-Team haben coole Dinge versucht und werden nun Standard werden. Es ist noch nicht fertig. Schließlich wird es eine konsistente border-radius Eigenschaft werden.

Es ist ein klarer Weg, um anzuzeigen, dass nicht erwartet wird, dass etwas in allen Browsern funktioniert. Zum Beispiel funktioniert -webkit-transition-property nur auf Webkit-basierten Browsern.

Egal, -webkit-border-radius und -moz-border-radius funktionieren nicht genau gleich. Das liegt daran, dass jeder Anbieter, auch wenn er ähnliche Dinge tut, Funktionen so implementieren darf, wie sie es möchten. Der Standard wird einen Standardweg etablieren, aber jeder kann innerhalb seines eigenen Namensraums tun, was er will.

+1

Aber ich glaube, sie können beide ihre Maschinen bauen, um den "Grenzradius" zu analysieren, genau wie sie es getan haben, um "-webkit-" oder "-moz-" zu parsen. Tag angeben. Engines können Tags oder Attribute darin ignorieren, wenn sie nicht bereit sind, damit umzugehen. Dennoch glaube ich, dass es einen bestimmten Grund gibt, "-webkit-" oder "-moz-" mit Tags zu verwenden. –

+3

@Kumaresan, Anbieter können ihre Engines nicht so erstellen, dass sie Nicht-Standard-Syntax zu Standardeigenschaften akzeptieren. Standardeigenschaften müssen in allen Browsern nur die gleiche Syntax akzeptieren und dürfen nicht permissiver sein. CSS sollte in allen Browsern absolut gleich funktionieren: Wenn eine Syntax in einem Browser funktioniert, aber nicht in einem anderen, wäre das kein Standard. – zneak

+0

Aber es ist kein Standard! Deshalb springen sie unnötigerweise durch all diese Reifen. Da es kein Standard ist, verwende einfach das Nicht-Standard-Tag und dann, wenn es Standard wird ... BOOM: Wir sind gut zu gehen! Entwickler sollten sich darüber im Klaren sein, welche Eigenschaften unterstützt werden und welche nicht, ohne '' -ugly-spezifische-Präfixe '' – Volte

8

-webkit-border-radius und -moz-border-radius wurden erstellt, bevor der CSS3-Rahmenstandard ein vollständiger war (es ist immer noch kein anerkannter Standard - es ist derzeit eine Kandidatenempfehlung).

Der Standard fordert nur eine border-radius, wie Sie aus der specification sehen können.

Sie sind spezifisch für Mozilla und Webkit - sobald der Standard genehmigt ist, sollte dies auf allen unterstützenden Browsern auf border-radius geändert werden.

+0

Hallo. Zu der Zeit wird es ein Standard werden, wird das Präfix noch unterstützt? (P.s. Herzlichen Glückwunsch für ♦) –

+1

@RoyiNamir - Soweit ich weiß, werden Anbieterpräfixe unterstützt, aber zu dieser Zeit nicht mehr wirklich benötigt. Und danke ... der Diamant kommt mit dem Job;) – Oded