W jaki sposób mogę zrobić coś w tym stylu:
Mam 2 pliki css. Gdy uruchamiam stronę przeglądarką inną niż IE otwiera 1 plik css a gdy IE to drugi?
http://msdn.microsoft.com/en-us/library/ms537512.aspx
Z tym, że to rozwiązanie typu: jeśli IE to ładuj ten plik, jeśli nie IE to go nie ładuj (nie do końca tak jak opisałeś, że jeśli nie jeden to drugi)
wpakuj to do head:
<?
$agent = getenv('HTTP_USER_AGENT');
if (strpos($agent, 'MSIE') != 0)
{
// gdy IE
echo '<link rel="stylesheet" href="styleIE.css" type="text/css" media="all" />';
}
else
{
// gdy inna przeglądarka
echo '<link rel="stylesheet" href="style.css" type="text/css" media="all" />';
}
?>
Ja znalazłem coś takiego:
<head>
<link rel="stylesheet" href="style-normal.css" type="text/css" />
<!-- [if IE]>
<link rel="stylesheet" href="style-ie.css" type="text/css" />
<![endif] -->
</head>
może być?
@pinokio999: to jest dokładnie to rozwiązanie, o którym napisał id02009. Nie ładuje stylu style-ie.css zamiast style-normal.css, ale obok niego, o ile przeglądarką jest Internet Explorer.
Na pewno jest lepsze niż wyszukiwanie ciągu znaków MSIE w USER_AGENT, bo ten jak wiadomo jest niezbyt miarodajnym wskaźnikiem.
To co zrobić by zamieniało?? Bo może jest zaprzeczenie jakieś do tego: <!-- [if IE]>, to by robiło się je i wtedy wrzucało ten normal.
Klik w link podany w drugim poście i się wszystkiego dowiesz.
pinokio999 napisał(a)
To co zrobić by zamieniało?? Bo może jest zaprzeczenie jakieś do tego: <!-- [if IE]>, to by robiło się je i wtedy wrzucało ten normal.
Nie bo to konstrukcja obsługiwana tylko przez j.e. IE. Słuchaj NAVa - czytaj :>
Nie tylko, firefox np pomija kod wewnątrz tych tagów, opera prawdopodobnie też. Nie wiem jak z safari czy bardziej niszowymi przeglądarkami.
Każda przeglądarka pomija, bo przecież to jest komentarz HTML zwykły. Jedynie IE szuka w tych komentarzach specjalnych dodatkowych elementów.
Ale po co zamieniać? Przecież CSS jest hierarchiczny: reguły zdefiniowane później nadpiszą reguły wcześniejsze.
Na przykład jeżeli będziesz miał:
domyślnie ładowany plik css z powiedzmy h1 { color: red; }
a dla IE ładowany potem plik css z h1 { color: green; }
to w IE h1 będzie zielone.
Zgadza się. Jednak pytanie było czy da się i jak. Jeśli chodzi o to czy warto... nie warto: 2 arkusze styli = 2x więcej problemów (trudniejsze zarządzanie, zmiany etc.). Problem jest oczywiście na styku nowoczesne przeglądarki vs. IE:
w przypadku IE7 jest już nieźle - łatwo zdefiniować jeden arkusz tak, żeby działał (bez hacków btw)
IE6 - przestarzała przeglądarka, więc jak Ci się uda przekonać o tym klienta - nie będziesz musiał się przejmować (ja tak w firmie robię ;))