Czy istnieje uzasadniony powód, dla którego przeglądarki prefiksują nowe funkcje CSS, zamiast pozwolić webmasterom na użycie wersji bez prefiksu?
Na przykład przykładowy kod gradientu tła wygląda następująco:
#arbitrary-stops {
/* fallback DIY*/
/* Safari 4-5, Chrome 1-9 */
background: -webkit-gradient(linear, left top, right top, from(#2F2727), color-stop(0.05, #1a82f7), color-stop(0.5, #2F2727), color-stop(0.95, #1a82f7), to(#2F2727));
/* Safari 5.1+, Chrome 10+ */
background: -webkit-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727);
/* Firefox 3.6+ */
background: -moz-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727);
/* IE 10 */
background: -ms-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727);
/* Opera 11.10+ */
background: -o-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727);
}
Po co zmusić webmasterów do czterokrotnego skopiowania i wklejenia tego samego kodu, aby uzyskać ten sam wynik?
Uwaga: jednym z często cytowanych powodów jest to, że style z prefiksem mają być tymczasowe, podczas gdy albo przeglądarka nie implementuje specyfikacji poprawnie, albo specyfikacja nie jest ostateczna .
IMO, ten powód to nonsens:
- Jeśli silnik przeglądarki nie implementuje specyfikacji poprawnie, przeglądarka nie będzie zgodna, bez względu na to, czy nie zaimplementuje jej w formie bez prefiksu lub nie zaimplementuje jej w formie prefiksu.
- Jeśli specyfikacja nie jest ostateczna, może mieć znaczenie, kiedy istniały wcześniejsze implementacje o tej samej nazwie. Na przykład, jeśli CSS2 miał
linear-gradient
, ale CSS3 miał zostać rozszerzonylinear-gradient
o dodatkowe funkcje, byłoby mądre tymczasowe przedrostek nowego, szkicu, implementacji poprzez-css3-<style>
rozróżnienie między działającym CSS2 a eksperymentalnym CSS3. W praktyce CSS2 nie malinear-gradient
ani innych nowości CSS3.
Zrozumiałbym również, gdyby różne przeglądarki miały różne formaty implementacji : na przykład powiedzmy, że wymagany jest Firefox, cień tekstu <weight-of-shadow distance-x distance-y color>
, a Chrome wymagany <distance-x distance-y weight-of-shadow color>
. Ale w rzeczywistości tak nie jest; przynajmniej wszystkie nowe funkcje CSS3, z których dotychczas korzystałem, miały ten sam format.
If the browser engine does not implement the spec correctly, the browser will not be compliant
- Witamy w prawdziwym świecie. ™