Eine Frage, die mich in letzter Zeit öfter mal via E-Mail und Blog-Kommentar erreicht hat, ist die nach dem Sinn der browserspezifischen CSS-Präfixe wie bei -moz-box-shadow
und -webkit-border-radius
. Die Antwort auf die Frage wieso bauen die das nicht gleich richtig ein?
ist recht einfach: Die CSS-Eigenschaften sind in 90% aller Fälle Work-In-Progress-Varianten der richtigen
CSS3-Eigenschaften. Der CSS2.1-Standard schreibt vor: wenn etwas zwar teilweise, aber nicht vollständig implementiert ist, soll man als verantwortungsvoller Browsermacher das Prefix davorkleben um anzuzeigen: das ist noch nicht die richtige Implementierung, sondern (erst mal) nur unsere Implementierung.
Besonders anschaulich wird das am Beispiel von border-top-left-radius
. Bei Webkit-Browsern rundet man die obere linke Ecke einer Box wie folgt ab:
-webkit-border-top-left-radius:10px;
Bei Firefox geht das hingegen wie folgt:
-moz-border-radius-topleft:10px;
Da ist nicht nur das Präfix unterschiedlich, sondern gleich der ganze Name der CSS-Eigenschaft – da steht also noch einige Arbeit für Webkit- und Gecko-Entwickler an. Aber sobald die Implementierung standardkonform umgesetzt ist, fliegt das Präfix raus. So ist es jüngst beim Firefox 3.5 geschehen, wo man schon vor einiger Zeit opacity
korrekt umgesetzt hatte und dafür nun das alte -moz-opacity
rausgeworfen hat.
Die restlichen 10% der CSS-Präfixe entfallen auf echte proprietäre CSS-Eigenschaften wie das -ms-filter
des IE8. Mehr Infos zu CSS-Präfixen bzw. vendor specific CSS extensions
gibt es in diesem feinen Artikel nebst weiterführenden Links von Bobby van der Sluis (via Guymon).
Kommentare (5)
Glödu ¶
2. Juli 2009, 13:17 Uhr
Danke für die Erklärungen!
Javos ¶
2. Juli 2009, 13:35 Uhr
Das heißt, wenn man Präfix-Eigenschaften in produktiver Umgebung benutzt, kann man damit rechnen, in neueren Browserversionen komisch Ergebnisse zu produzieren?
Rubén ¶
2. Juli 2009, 17:34 Uhr
Muss man die Präfixe dann irgendwann entfernen? Oder funktionieren die auch noch, wenn der Browser es "richtig" macht?
Peter ¶
2. Juli 2009, 22:03 Uhr
Zitat Javos:
Effekte nicht unbedingt, aber andere (im Regelfall solche, die näher am Standard sind).
Zitat Rubén:
Kommt auf den Broserhersteller an, aber in der Regel denke ich wird das alte Zeug entfernt. Mozilla hat es mit
-moz-opacity
ja vorgemacht – im Firefox 3.5 ist das nicht mehr drin.dermetfan ¶
17. Juni 2012, 00:46 Uhr
Achso, na dann werde ich wohl die Finger davon lassen. Ist zwar schön zum Experimentieren, aber ich will kein temporäres und browserspezifisches CSS in meinen Websiten ^^