Mam odziedziczony projekt i są miejsca, w których jest kompletny bałagan. To jest jeden z nich. Muszę kierować tylko na IE (dowolną wersję).
#nav li {
float: left;
height: 54px;
background: #4f5151;
display: table;
border-left: 1px solid grey;
}
Żeby było jasne: wewnątrz osadzonego arkusza stylów i bez dodawania identyfikatorów lub klas do tagów w html, muszę zastosować styl ramki tylko wtedy, gdy użytkownik używa IE. W jaki sposób mogę to zrobić?
Edycja: znalazłem rozwiązanie dla Firefoksa, edytując pytanie, aby to odzwierciedlić.
Odpowiedzi:
Internet Explorer 9 i nowsze wersje : Możesz użyć komentarzy warunkowych, aby załadować arkusz stylów specyficzny dla IE dla dowolnej wersji (lub kombinacji wersji), na którą chcesz konkretnie kierować. Tak jak poniżej, używając zewnętrznego arkusza stylów.
Jednak począwszy od wersji 10 komentarze warunkowe nie są już obsługiwane w IE.
Internet Explorer 10 i 11: Utwórz zapytanie o media, używając opcji -ms-high-contrast, w której umieścisz style CSS specyficzne dla IE 10 i 11. Ponieważ -ms-wysoki kontrast jest specyficzny dla Microsoft (i dostępny tylko w IE 10+), zostanie przeanalizowany tylko w Internet Explorerze 10 i nowszych.
Microsoft Edge 12: Może korzystać z reguły @supports Oto link ze wszystkimi informacjami na temat tej reguły
Wykrywanie wbudowanej reguły IE8
Mam jeszcze 1 opcję, ale wykrywa ona tylko IE8 i wersję poniżej.
Jak określiłeś dla osadzonego arkusza stylów. Myślę, że musisz użyć zapytania o media i komentarza warunkowego dla poniższej wersji.
źródło
-ms-high-contrast:active
wpływa na Edge, jeśli system używa trybu wysokiego kontrastu.@supports
Rozwiązanie jest naprawdę świetne: detekcja cechą jest droga. Byłem skłonny zaatakować Edge'a ze względu na brak wsparciawidth: max-content
:@supports not (width: max-content)
czy robi to starannie i zostanie miło zignorowany, gdy Edge w końcu go poprze . (Powinno to nastąpić jesienią 2019 r., Ponieważ powinno się wtedy przełączyć na Chromium do renderowania).Oto zbiór zapytań o media, które pozwolą ci to zrobić dla dowolnej wersji Internet Explorera (od IE6 do IE11 +), Firefox, Chrome i Safari (EDYCJA: także dodana Opera).
IE 6
lub
IE 7
lub
IE 6 i 7
lub
lub
IE 6, 7 i 8
IE 8
lub
Tryb norm IE 8
IE 8,9 i 10
Tylko IE 9
IE 9 i wyżej
IE 9 i 10
Tylko IE 10
IE 10 i wyżej
lub
IE 11 (i wyżej ..)
Firefox (dowolna wersja)
Firefox (tylko Quantum / Stylo)
Firefox Legacy (przed stylem)
Webkit (Chrome i Safari, dowolna wersja)
Google Chrome (29+)
Safari (7.1+)
Safari (od 6.1 do 10.0)
Safari (10.1+)
Opera (12+)
Opera (11 i niższe)
Aby uzyskać więcej informacji lub dodatkowe zapytania o media, odwiedź witrynę browserhacks.com i / lub sprawdź ten post na blogu, który napisałem na ten temat.
źródło
Podczas korzystania
SASS
używam następujących 2,@media queries
aby celować w IE 6-10 i EDGE.http://keithclark.co.uk/articles/moving-ie-specific-css-into-media-blocks/
Edytować
Docieram również do późniejszych wersji EDGE
@support queries
(dodaj tyle, ile potrzebujesz)https://jeffclayton.wordpress.com/2015/04/07/css-hacks-for-windows-10-and-spartan-browser-preview/
źródło
Aby kierować reklamy na IE tylko w moich arkuszach stylów, używam Sass Mixin:
źródło
Innym działającym rozwiązaniem dla stylizacji specyficznej dla IE jest
A potem twój selektor
źródło
Po napotkaniu problemów z awarią witryn w Edge podczas korzystania z trybu wysokiego kontrastu natknąłem się na następującą pracę Jeffa Claytona:
https://browserstrangeness.github.io/css_hacks.html
To szalone, dziwne zapytanie medialne, ale w Sass są łatwiejsze:
To jest oczekiwane wersje IE oczekiwane dla IE8.
Lub możesz użyć:
Który celuje w IE8-11, ale także uruchamia FireFox 1.x (co w moim przypadku nie ma znaczenia).
W tej chwili testuję z obsługą drukowania, i wydaje się, że działa dobrze:
źródło