2010-03-06 11 views
26

Rzeczą, której najbardziej nienawidzę w CSS3, jest to, że zawsze masz dwie właściwości, które powinieneś zrobić, aby zrobić jeden efekt. Myślę, że to nie jest profesjonalne i zwiększa rozmiar CSS. Na przykład, dlaczego nie zjednoczyć -webkit-border-radius i -moz-border-radius w border-radius Wyobraź sobie, że mamy 10 przeglądarek, czy napiszemy 10 linii, aby zrobić efekt zaokrąglonego rogu? Ktoś może wyjaśnić?Dlaczego w CSS3 jest -moz-XXX i -webkit-XXX?

Odpowiedz

29

To dlatego, że są specyficzne dla danego dostawcy. -webkit- i -moz- -prefixowane właściwości to standardowe właściwości , a nie. Ten "obszar nazw" pozwala sprzedawcom testować nowe, ciekawe funkcje, a jeśli są świetne, można je włączyć do standardów. Tak dzieje się z CSS3: Mozilla i zespół Webkita wypróbowali fajne rzeczy, a teraz staną się standardem. Po prostu jeszcze nie zostało to zrobione. W końcu stanie się spójna właściwość border-radius.

Jest to wyraźny sposób wskazania, że ​​coś nie powinno działać we wszystkich przeglądarkach. Na przykład -webkit-transition-property działa tylko w przeglądarkach opartych na Webkit.

W każdym razie, -webkit-border-radius i -moz-border-radius nie działają dokładnie tak samo. Dzieje się tak dlatego, że każdy sprzedawca, nawet robiąc podobne rzeczy, może wdrażać funkcje zgodnie z oczekiwaniami. Standard ustanowi standardowy sposób, ale każdy będzie mógł robić, co chce, w swoim własnym obszarze nazw.

+1

Ale wierzę, że oboje mogą zbudować swoje silniki, aby przeanalizować "graniczny promień", tak jak to, co zrobili, aby parsować "-webkit-" lub "-moz-" podaj tag. Silniki mogą ignorować znaczniki lub atrybuty w nim, jeśli nie chcą się z tym obchodzić. Nadal uważam, że istnieje jakiś szczególny powód używania "-webkit-" lub "-moz-" z tagami. –

+3

@Kumaresan, dostawcy nie mogą budować swoich silników, aby akceptować niestandardową składnię do standardowych właściwości. Standardowe właściwości muszą akceptować tylko tę samą składnię we wszystkich przeglądarkach i nie mogą być bardziej tolerancyjne. CSS powinien działać absolutnie równo we wszystkich przeglądarkach: jeśli jakaś składnia działałaby w jednej przeglądarce, ale nie w innej, to nie byłaby standardowa. – zneak

+0

Ale to NIE jest standardowe! I dlatego niepotrzebnie przeskakują przez te wszystkie obręcze. Ponieważ nie jest standardem, po prostu użyj niestandardowego tagu standardowego, a następnie, jeśli/kiedy stanie się standardem ... BOOM: Dobrze nam iść! Programiści powinni wiedzieć, które właściwości są obsługiwane i które nie są pozbawione opcji "specyficznie-specyficznych prefiksów". – Volte

8

-webkit-border-radius i -moz-border-radius zostały utworzone zanim standard granic CSS3 był kompletny (nadal nie jest zatwierdzonym standardem - obecnie jest rekomendacją kandydacką).

Standard dotyczy tylko border-radius, co można zobaczyć na stronie specification.

Są one charakterystyczne dla mozilla i webkita - po zatwierdzeniu standardu powinien on zostać zmieniony na border-radius we wszystkich przeglądarkach obsługujących.

+0

Witam. W tym czasie stanie się standardem, czy prefiks będzie nadal wspierany? (P. Moje gratulacje za ♦) –

+1

@RoyiNamir - O ile mi wiadomo, prefiksy dostawców będą nadal obsługiwane, ale w tym czasie nie są już potrzebne. I dziękuję ... Diament przychodzi z zadaniem;) – Oded