Moja sugestia:
Zastosowanie CSS3Pie - http://css3pie.com/
To jest biblioteką JavaScript dla IE6, IE7 i IE8, że łaty na wsparcie dla kilku funkcji CSS3, w tym gradienty.
Tak, możesz użyć okropnych stylów IE-filter
, jeśli chcesz, ale CSS3Pie pozwala używać standardowych stylów CSS dla tych funkcji. Dużo łatwiej.
Aby właściwie odpowiedzieć na bezpośrednie pytanie:
Tak, jest zazwyczaj wymagany styl -ms-filter
. IE8 zawsze będzie nas używać zamiast filter
, który jest używany głównie w IE6 i IE7. W niektórych przypadkach filter
będzie działać w IE8, ale nie wszystkie, więc najlepiej jest użyć -ms-filter
, aby zapewnić zgodność z IE8.
[EDYTORZY] Dlaczego to zmienili? Ponieważ kiedy wypuścili IE8, Microsoft bardzo się starał, aby być "zgodnymi ze standardami".
Aby przeglądarka była zgodna ze standardem, powinna używać prefiksu dostawcy dla każdej obsługiwanej przez nią usługi CSS, która nie jest sfinalizowanym standardem W3C. Dodając prefiks -ms-
, Microsoft starał się (z opóźnieniem) cofnąć zanieczyszczenie globalnej przestrzeni nazw CSS.
Ponadto dodano cytaty, ponieważ stara składnia filter
bez cudzysłowów była nieprawidłowa CSS (głównie z powodu dwukropka po progid
) i powodowała problemy z niektórymi przeglądarkami. (Miałem kiedyś przykład z Firefoxem 3.6, w którym odrzucano wszystkie style po stylu filter
, które obracały elementem - zajęło im to całe wieki, aby dowiedzieć się, co się dzieje).
Fakt, że Microsoft zachował zgodność wsteczną z oryginalną składnią filter
, był w dużej mierze kwestią pragmatyzmu. MS nie mógł pozwolić sobie na złamanie wszystkich stron przy użyciu starej składni. Ale Microsoft miał silne implikacje, że deweloperzy powinni używać obu, ponieważ odrzucą wsparcie dla starego stylu filter
w kolejnych wersjach IE. Okazało się, że za jednym zamachem porzucili wsparcie zarówno dla filter
, jak i dla -ms-filer
, ale implikacje podane po wydaniu IE8 były wystarczające, aby stać się zalecaną praktyką w celu zapewnienia obu składni w twoim arkuszu stylów.
W momencie, gdy wydano IE8, XHTML był nowym smakiem miesiąca, a pisanie kodu, który sprawdził się doskonale, było na szczycie listy dla wielu programistów. Prawdopodobnie było to silną siłą napędową zmiany składni w celu uwzględnienia cytatów. Z powodu zbłąkanych dwukropków niemożliwe jest napisanie CSS, który sprawdza poprawność przy użyciu starego stylu filter
. Używanie nowych stylów -ms-filter
pozwoliło ludziom pisać prawidłowe CSS. Pomysły na dobry pomysł nie sprawdziły się, ponieważ ludzie musieli nadal używać starej składni, ale intencja była dobra.
Warto podkreślić, że inne opatentowane style zostały poddane takiemu samemu traktowaniu. Na przykład możesz użyć -ms-behavior
w IE8 zamiast starego stylu behavior
. Nikt tego nie używa. Czemu? Naprawdę nie wiem.
Kolejnym faktem wartym poznania jest to, że W3C jest w trakcie standaryzacji modelu CSS property called filter
. Wykona zupełnie inną pracę niż styl Microsoft filter
i będzie działać zupełnie inaczej. Jeśli/kiedy zostanie ustandaryzowany i przeglądarki zaczną go obsługiwać, nastąpi wyraźne zderzenie między tymi dwiema składniami.
Nie bardzo lubię CSS3Pie. Zobacz [tutaj] (http://stackoverflow.com/a/7668408/937084) i [tutaj] (https://twitter.com/#!/grantmccall/status/117649720297525248). W przypadku gradientów wersja ** filter ** działa w IE6, IE7, IE8 i IE9. W podglądzie klienta IE10 działa on tylko w trybie zgodności. Wersja ** - ms-filter ** działa w IE8 i IE9, ale * nie * IE10 - nawet w trybie zgodności. IE10 używa ** - ms-linear-gradient **. Wygląda na to, że wersja **-ms-filter ** jest dobra tylko dla IE8 i IE9, ale obydwie obsługują ** filtr **, więc po co zawracać sobie głowę wersją ** - ms-filter **? – Nick
Uaktualniłem odpowiedź, dodając więcej szczegółów o tym, co i dlaczego -ms-filter. – Spudley
BTW - Masz rację, CSS3Pie może działać wolno. Ale są też filtry. Żadne z nich nie jest powolne, chyba że poważnie nadużywasz ich. A CSS3Pie ma dużą zaletę filtrów, ponieważ obsługuje kolory kanałów alfa dla twoich gradientów, których styl filtru MS nie ma. Inną opcją, oczywiście, jest po prostu użycie płaskiego fall-back dla starego IE. O ile nie zniszczy to całkowicie projektu Twojej strony, lub twoja publiczność ma bardzo wysoki odsetek użytkowników IE, czasami łatwiej jest pozwolić im mieć płaskie kolory i kwadratowe rogi. – Spudley