7

Z tego, co zebrałem i zrozumiałem tu i tam (zatrzymaj mnie, gdy się mylę): selektor dzieci (>) działa na IE7 + tak długo, jak uruchamiasz tryb standardów za pomocą twojego doctype, ma to zrobić html5's <!DOCTYPE html>.css przełącznik potomny (>) nie działa w IE8?

Mimo to, mój css:

nav > ul > li > a 
{ 
    padding: 0.2em 2em 0.2em 2em; 
    background-color: #FAFAFA; 
} 
nav > ul > li > a:hover 
{ 
    background-color: #AFAFAF; 
} 

nie wydaje się, aby osiągnąć mój HTML:

<!DOCTYPE html> 
... 
<body> 
<header> 
    <nav> 
     <a class="inblock valignC logo" href="/"><img src="static/img/logo.gif" /></a> 
     <!--Menu nav : LOGO | Agence | Portfolio | Equipe | Clients | Contact--> 
     <ul class="inblock valignC"> 
      <li class="inline"><a class="ie" href="/agence/">Agence</a></li> 
     ... 
     </ul> 
... 

w IE8, muszę użyć dedykowanego klasę .pl I dodanej na kierowane <a> s .

Jakieś wyjaśnienie?

Odpowiedz

11

Musisz użyć HTML5 Shiv dla wersji IE poniżej 9:

<!--[if lt IE 9]> 
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script> 
<![endif]--> 
+0

Idealne dziękuję, zajrzę do tego kawałka kodu –

+0

Tak, to jest super łatwe. Po prostu przyklej go na końcu sekcji i już możesz iść! –

1

Myślę, że to dlatego, że starsze przeglądarki nie mają elementu nav.

2

Możliwe, że nie jest to selektor, ale same znaczniki, ponieważ nie są zdefiniowane jako standardowe znaczniki w IE8 i poniżej. Możesz sprawdzić, czy tak jest, używając tylko ul > li i sprawdzając, czy selektor działa.

Tak naprawdę niewiele można z tym zrobić, poza używaniem znaczników HTML5, dopóki więcej osób nie zaktualizuje swoich przeglądarek. Osobiście wolałbym teraz używać <div class="nav">.

+0

Czy [html5shiv] (http://code.google.com/p/html5shiv/) to naprawi? –

+2

W rzeczywistości istnieje sztuczka JS, której można użyć, aby elementy działały. 'document.createElement ('nav')' przed użyciem. – Andrea

+0

Tak, to było,

1

To nie działa, ponieważ IE8 nie rozumie, albo 'poprawnie' wdrożenia, takie jak znaczniki HTML <nav>.

Nie używać HTML 5 aż do roku 2015. To jest dla 2 powodów:

  1. W3C rekomendacja dla HTML5 nie jest zamknięta aż do grudnia 2014 roku, więc każdy Obecna implementacja przeglądarka jest zgadywanie, co co się sfinalizowane dokument będzie zawierać. Kod, który działa teraz, nie może działać po tym punkcie (ale prawdopodobnie będzie działać). Dodanie haseł JS na wierzchu, aby przeglądarki HTML5 były zgodne, zwiększa potencjalne problemy z kompatybilnością.

  2. Do roku 2015 udział w rynku dla IE8 będzie prawdopodobnie na minimalnym poziomie, np. poniżej 2-3%, w którym to momencie korzyści z obsługi IE8 zostaną przekroczone kosztami nieużywania kodu zgodnego z HTML5.

W międzyczasie, to jest dobry pomysł, aby użyć doctype HTML5, ponieważ jest do przodu i wstecz kompatybilne i użyć podzbioru znaczników HTML5, które są również ważne w HTML4 (innymi słowy tagów, które są poprawne w HTML4 i HTML5, które są w większości z nich). Osobiście lubię używać <div class="nav"></div> zamiast <nav></nav> itd.

Pod koniec dnia rób to, co chcesz, ale musisz być świadomy przynajmniej tych problemów, szczególnie w świecie, w którym HTML5 jest modne, że jest używany często i niewłaściwie.