2010-09-24 25 views
6

Tôi có đoạn mã sau:: cuối cùng con lớp pseudo selector trong CSS và Internet Explorer

ul.myList li{ 
    border-right: 1px dotted #000; 
} 

Tuy nhiên, trên các yếu tố cuối cùng, tôi cần phải loại bỏ biên giới như thiết kế mà tôi đang làm việc kể từ mệnh lệnh rằng mục cuối cùng không yêu cầu đường viền làm dấu phân cách.

Vì vậy, tôi cần phải nhắm đến con cuối cùng của một danh sách và do đó trong css của tôi, tôi đã thêm

ul.myList li:last-child{ 
    border-right: none; 
} 

Mà như chúng ta đều biết, hoạt động tốt trong Firefox, Safari và Chrome.

Vấn đề nằm khi chúng ta xem các trang trong Internet Explore 6 đến 8.

Trả lời

11

Vì vậy, sau khi một số đào bới xung quanh, tôi thấy câu trả lời:

Nếu trình duyệt là IE < 8, chỉ định một kiểu như thế này:

<!--[if lt IE 8]> 
<link rel="stylesheet" href="css/ie_all.css" type="text/css" /> 
<![endif]--> 

Và trong stylesheet IE của bạn chỉ định các quy tắc sau :

ul.myList li{ 
    border-right: expression(this.nextSibling==null?'none':'inherit'); 
} 

Biểu thức nextSibling sẽ xem liệu có yếu tố nào sau đó và nếu có thừa kế quy tắc trong t biểu định kiểu mặc định, nếu không, nó sẽ áp dụng quy tắc mới.

Thông tin khác có thể được tìm thấy here

+1

+1 Thật khủng khiếp, nhưng nó có thể hoạt động. Thêm một từ tôi cho đến với một giải pháp khả thi cho IE. (Và trừ một triệu điểm cho IE để làm cho chúng tôi đi lên hack như thế này ở nơi đầu tiên). Worth chỉ ra rằng IE9 (hiện đang trong phiên bản beta) có thể hỗ trợ nó, vì vậy bạn có thể muốn điều chỉnh [nếu IE] chỉ dành cho IE8 hoặc thấp hơn. – Spudley

+0

Cảm ơn bạn đã trả lời, tôi không phải là 100% nếu IE 9 sẽ hỗ trợ nó. Tôi sẽ điều chỉnh bài đăng của mình để phản ánh cho IE 8 trở xuống. –

+1

IE9 S support hỗ trợ nó, theo tài liệu riêng của họ .. Tuy nhiên đáng tin cậy đó là. – Kyle

2

IE8 < không hỗ trợ selector giả này. Kiểm tra các MSDN article cho tất cả các tính năng được hỗ trợ :)

Bạn có thể xem giải pháp jQuery này để Enable pseudo selectors in IE hoặc chỉ để nó ở trong IE.

1

Bạn có thể thực hiện việc này bằng jQuery. Vì vậy, thay vì dựa vào CSS. Sử dụng Bộ chọn jQuery để đặt thuộc tính của phần tử cuối cùng của bạn. Tôi hiểu rằng bạn đã gắn thẻ câu hỏi của mình với nó.

jQuery('ul.myList li:last-child').css("Key","value"); 
2

Khi Internet Explorer trước khi phiên bản 9 (mà vẫn đang được phát triển) không hỗ trợ :last-child chọn ở tất cả, giải pháp tốt nhất của tôi, thật không may, sẽ được thiết lập một lớp học hoặc id trên yếu tố cuối cùng trong danh sách của bạn và cố gắng chọn nó. Tất nhiên, nếu rời khỏi biên giới bên phải trong cho IE sẽ không phá vỡ bố cục hoàn toàn, bạn có thể muốn để lại mã của bạn như là, nếu bạn không nhớ IE screwing up rendering chỉ một chút.

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