IE StylesJeżeli zajmujesz się Web Developmentem to zapewne nie raz chciałeś wynaleźć wehikuł czasu i zabić wszystkich programistów odpowiadających za wygraną IE 5.0 w wojnie przeglądarek przeciwko Netscape. Zwycięstwo tej wojny jest odczuwane ,aż do dzisiaj. Wiele użytkowników ślepo korzysta z IE. Świat na szczęście się zmienia…ale dzięki popularności systemu Windows XP użytkownicy IE8 i IE7 wciąż istnieją.
Tak to jest, gdy scalisz swoją przeglądarkę z systemem operacyjnym. Poza tym nie oszukujmy się nawet JQuery oficjalnie powiedziało nie dla IE8.
Tak koniec pisania specjalnych skryptów dla IE, bo są jakieś bugi z właściwością z-index i itp.
W tym wpisie opiszę technikę tworzenia oddzielnych styli dla IE. Jest to prosty sposób na rozwiązanie problemu z IE, jak i z jej specyficznymi wersjami.
Miejmy nadzieje ,że niedługo nie będziemy musieli z takich podobnych technik korzystać.
Kiedy korzystać z warunkowych CSS.
- Masz problemy z IE i muszą one być naprawione
- Twój kod CSS musi być wolny od haków IE
- Chcesz mieć porządek w swoich plikach CSS
- Technika ta jest akceptowana przez Microsoft więc dlaczego nie chciałbyś jej użyć.
Tagi warunkowe mogą być używane nie tylko do CSS. W ten sam sposób możesz uruchomić warunkowo skrypty JavaScript, jak i elementy HTML.
Kod
Kod idzie do sekcji <head> wraz z innymi odwołaniami do plików CSS.
Wszystkie wersje IE <!--[if IE]>
<link rel="stylesheet" type="text/css" href="all-ie-only.css" />
<![endif]-->
Wszystko tylko nie IE<!--[if !IE]><!--> <link rel="stylesheet" type="text/css" href="not-ie.css" /> <!--<![endif]-->
Tylko IE7 <!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="ie7.css">
<![endif]-->
Tylko IE6 <!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="ie6.css" />
<![endif]-->
Tylko IE5 <!--[if IE 5]>
<link rel="stylesheet" type="text/css" href="ie5.css" />
<![endif]-->
Tylko IE5.5 <!--[if IE 5.5000]>
<link rel="stylesheet" type="text/css" href="ie55.css" />
<![endif]-->
Tylko IE6 i niżej <!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" href="ie6-and-down.css" />
<![endif]-->
Tylko IE6 i niżej <!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="ie6-and-down.css" />
<![endif]-->
Tylko IE7 i niżej <!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" href="ie7-and-down.css" />
<![endif]-->
Tylko IE7 i niżej <!--[if lte IE 7]>
<link rel="stylesheet" type="text/css" href="ie7-and-down.css" />
<![endif]-->
Tylko IE8 i niżej <!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" href="ie8-and-down.css" />
<![endif]-->
Tylko IE8 i niżej <!--[if lte IE 8]>
<link rel="stylesheet" type="text/css" href="ie8-and-down.css" />
<![endif]-->
Tylko IE7 i wyżej <!--[if gt IE 6]>
<link rel="stylesheet" type="text/css" href="ie7-and-up.css" />
<![endif]-->
Tylko IE7 i wyżej <!--[if gte IE 7]>
<link rel="stylesheet" type="text/css" href="ie7-and-up.css" />
<![endif]-->
Tylko IE8 i wyżej <!--[if gt IE 7]>
<link rel="stylesheet" type="text/css" href="ie8-and-up.css" />
<![endif]-->
Tylko IE8 i wyżej <!--[if gte IE 8]>
<link rel="stylesheet" type="text/css" href="ie8-and-up.css" />
<![endif]-->
Haki dla IE
Jeśli już musisz mieć wszystko w jednym pliku CSS na pewno będzie chciał skorzystać z haków dla IE.
Tylko IE6* html #div { height: 100px; }
Tylko IE7*+html #div { height: 100px; }
Tylko IE8#div { height: 100px\0/; }
Tylko IE7 I IE8#div { height: 100px\9; }
Wszystko oprócz IE7#div { _height: 100px; }
Ukrywa właściwość dla IE6 i niżej#div { height/**/: 100px; }
Ukrywa właściwość dla IE6 i niżejhtml > body #div { height: 100px; }
Rozwiązanie JQuery < 1.9 i inne ciekawostki
Jeśli rozwiązanie z tagami tobie się nie podoba zawsze możesz użyć JQuery. Oto prosty kod, który umieści wybrany styl w zależności od tego, czy przeglądarka jest IE, czy nie. Dla efektywności możesz usunąć cześć z “dokument.ready”.
<script type="text/javascript"> $(document).ready(function () { if ($.browser.msie) { $("head").append('<link href="/Portals/CSS/menuBar_IE.css" rel="stylesheet" />'); } else { $("head").append('<link href="/Portals/CSS/menuBar.css" rel="stylesheet" />'); } }) </script>
Rozwiązanie to działa do wersji 1.9. Dlaczego więc nie użyć czystego JavaScript?
//check for IE7 if(navigator.appVersion.indexOf("MSIE 7.")!=-1){}
Wstrzykując taki skrypt do HTML też możemy określić jaką przeglądarkę obsługujemy.
var ie = (function () { var undef, v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i'); while ( div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->', all[0] ); return v > 4 ? v : undef; }());
Źródło https://gist.github.com/padolsey/527683
To by było na tyle.