2012-04-24 38 views
7

Từ những gì tôi thu thập và hiểu ở đây và ở đó (dừng tôi khi tôi sai): bộ chọn con (>) hoạt động trên IE7 + miễn là bạn kích hoạt chế độ tiêu chuẩn với tài liệu của mình, html5's <!DOCTYPE html> là nghĩa vụ phải làm điều này.bộ chọn con css (>) không hoạt động trong IE8?

Tuy nhiên, css của tôi:

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

dường như không đạt html của tôi:

<!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> 
... 

trong IE8, tôi phải sử dụng lớp .ie chuyên dụng tôi đã thêm vào nhắm mục tiêu <a> s .

Bất kỳ giải thích nào?

Trả lời

11

Bạn cần phải sử dụng HTML5 Shiv cho các phiên bản IE dưới 9:

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

cảm ơn hoàn hảo, tôi sẽ xem đoạn mã này –

+0

Yea siêu dễ dàng. Chỉ cần dán nó vào cuối phần của bạn và bạn tốt để đi! –

1

Tôi nghĩ rằng đó là vì các trình duyệt cũ hơn không có phần tử điều hướng.

2

Có thể nó không phải là bộ chọn, mà đúng hơn là các thẻ, vì chúng không được định nghĩa là các thẻ tiêu chuẩn trong IE8 trở xuống. Bạn có thể xem đây có phải là trường hợp chỉ bằng cách sử dụng ul > li và xem liệu công cụ chọn có hoạt động hay không.

Không thực sự nhiều bạn có thể làm được điều đó, ngoài việc không sử dụng thẻ HTML5 cho đến khi có nhiều người nâng cấp trình duyệt của họ hơn. Cá nhân tôi thà sử dụng <div class="nav"> bây giờ.

+0

[html5shiv] (http://code.google.com/p/html5shiv/) có khắc phục được sự cố này không? –

+2

Thực ra, có một mẹo JS mà bạn có thể sử dụng để làm cho các phần tử hoạt động. 'document.createElement ('nav')' trước khi bạn sử dụng nó. – Andrea

+0

Đúng là nó,

1

Nó không làm việc vì IE8 không hiểu, hoặc 'chính xác' thực hiện, các thẻ HTML như <nav>.

Không sử dụng HTML 5 cho đến năm 2015. Đây là 2 lý do:

  1. Khuyến cáo của W3C cho HTML5 không hoàn thành cho đến tháng 12 năm 2014 vì vậy bất kỳ thực hiện trình duyệt hiện tại đang đoán những gì những gì các tài liệu hoàn thành sẽ chứa. Mã hoạt động ngay bây giờ, không được bảo đảm để làm việc sau thời điểm đó (nhưng có thể sẽ). Thêm các hacks JS lên trên, để làm cho trình duyệt HTML5 tuân thủ, thêm nhiều vấn đề tương thích về phía trước tiềm năng hơn.

  2. Đến năm 2015, thị phần cho IE8 có thể sẽ ở mức tối thiểu, ví dụ: dưới 2-3% vào thời điểm đó, các lợi ích của việc hỗ trợ IE8 sẽ được vượt qua bởi chi phí không sử dụng mã tuân thủ HTML5.

Trong khi đó, nó là một ý tưởng tốt để sử dụng một DOCTYPE HTML5, bởi vì nó là chuyển tiếp và tương thích ngược và sử dụng các tập hợp con của các thẻ HTML5 mà còn có giá trị trong HTML4 (nói cách các thẻ khác, đó là hợp lệ trong HTML4 VÀ HTML5, phần lớn trong số đó). Cá nhân tôi thích sử dụng <div class="nav"></div> thay vì <nav></nav> v.v.

Vào cuối ngày, hãy làm những gì bạn muốn, nhưng bạn cần phải biết những vấn đề này ít nhất, đặc biệt là trong một thế giới mà HTML5 là một từ thông dụng được sử dụng thường xuyên và không thích hợp.

Các vấn đề liên quan