2011-08-16 11 views
44

Chyba napisane coś takiego następujących tysiąc razy:Kolejność zgłoszeń CSS dostawcy sprzętu

.foo { 
    border-radius: 10px;   /* W3C */ 
    -moz-border-radius: 10px; /* Mozilla */ 
    -webkit-border-radius: 10px; /* Webkit */ 
} 

Ale dopiero teraz myślałem o tym, czy kolejność tych jest ważne? Wiem, że pomiędzy -moz-* i -webkit-* nie ma znaczenia, ponieważ co najwyżej 1 z nich zostanie odczytanych, ale czy jest to lepsze (pod względem przyszłej ochrony, itp.), Aby wykonać standard W3C pierwszy czy ostatni?

Odpowiedz

48

Najlepszą praktyką jest bezspornie mają właściwość bez prefiksu ostatniego:

.foo { 
    -moz-border-radius: 10px; /* Mozilla */ 
    -webkit-border-radius: 10px; /* Webkit */ 
    border-radius: 10px;   /* W3C */ 
} 

cokolwiek jest ostatnia z -webkit-border-radius i border-radius będzie jeden, który jest używany.

-webkit-border-radius to właściwość "eksperymentalna" - implementacja może zawierać odchylenia od specyfikacji. Implementacja dla border-radius powinna odpowiadać specyfikacji zawartej w specyfikacji.

Zalecane jest użycie wersji W3C, gdy jest ona dostępna, aby zapewnić spójność między wszystkimi przeglądarkami, które ją obsługują.

19

Zamawianie jest ważne. Aby w przyszłości sprawdzić swój kod, musisz wprowadzić specyfikację W3C jako ostatnią, więc kaskada faworyzuje go powyżej wersji z prefiksem dostawcy.

.foo { 
    -moz-border-radius: 10px; /* Mozilla */ 
    -webkit-border-radius: 10px; /* Webkit */ 
    border-radius: 10px;   /* W3C */ 
} 

Na przykład, powiedzmy, w dół drogi Google Chrome obsługuje border-radius, ale również wspiera -webkit-border-radius dla wstecznej kompatybilności z jego poprzednimi wersjami. Gdy Chrome napotka tę klasę .foo, najpierw zobaczy ją -webkit, a następnie zobaczy standard, a domyślnie będzie standardem (i zignoruje webkit).

Powiązane problemy