2012-01-23 8 views
6

Có thể khiến Internet Explorer bỏ qua hoặc tránh đọc một dòng trong biểu định kiểu CSS không?IE Hack cách làm cho IE bỏ qua/tránh đọc một dòng trong tờ định kiểu

Tôi chủ yếu quan tâm đến IE8, nhưng quan tâm đến các giải pháp cho mọi phiên bản.

+0

chắc chắn, nhưng bạn sẽ phải cụ thể hơn, phiên bản nào của IE? –

+0

http://css-tricks.com/how-to-create-an-ie-only-stylesheet/ – Konerak

+0

@Madmartigan: Tôi có. Vui lòng đọc liên kết. Cuộn xuống. 'Hacks'. – Konerak

Trả lời

6

Để ngăn IE8 (và cũ hơn) đọc các kiểu, chỉ cần sử dụng một cái gì đó trong bộ chọn của bạn mà nó không hỗ trợ và tất cả các trình duyệt khác đều hỗ trợ. Ví dụ, thêm :root vào bộ chọn của bạn. Dưới đây là một ví dụ: http://jsfiddle.net/mathias/kX6tR/

.foo { background: red; } 
:root .foo { background: lime; } 

:root được hỗ trợ trong IE9 và tất cả các trình duyệt khác, do đó đây là một safe CSS hack.

+0

Rất vui, đã chuẩn bị đề xuất chính xác điều tương tự. Không cần hack ở đây. –

+0

Đây là một trong những "hacks" hữu ích nhất mà tôi từng thấy. Cảm ơn. –

1

tùy chọn khác:

Hãy IE đọc những dòng trong stylesheet của bạn, và sau đó ghi đè lên các dòng trong một tức là kiểu cụ thể nạp sau đó bằng cách sử dụng một bình luận có điều kiện:

http://www.quirksmode.org/css/condcom.html

cách mà bạn để giữ cho bảng định kiểu của bạn không bị hacks chọn.

+0

+1, câu lệnh có điều kiện tốt hơn so với hack IMHO. – Tim

+1

+0 Tệp CSS có điều kiện là một cơn ác mộng về bảo trì và chúng tôi có các tùy chọn không có hack khác. –

+0

Sử dụng các bảng định kiểu riêng cho IE là một ý tưởng rất tồi. Lý do: http://mathiasbynens.be/notes/safe-css-hacks –

3

Tốt hơn hết là tránh hack hoàn toàn. Điều đúng đắn cần làm trong trường hợp của bạn là xác định lại quy tắc CSS của bạn cho IE trong một biểu định kiểu riêng biệt và bao gồm nó sau tệp kiểu chính.

<link rel="stylesheet" href="nice_browsers.css" /> 
<!--[if IE]> 
<link rel="stylesheet" href="dumb_ie.css" /> 
<![endif]--> 

Ngoài các trình duyệt thông thường sẽ không tải xuống tệp thứ hai, do đó không yêu cầu HTTP bổ sung. Và tệp CSS chính sẽ xác thực (nếu bạn quan tâm đến điều đó - và có thể bạn nên)

+0

Tốt hơn hết là tránh hack hoàn toàn. Đúng, nhưng ai đang đề xuất hoặc yêu cầu "hack"? –

+0

@Madmartigan Hack là hack, ngay cả khi nó được coi là "an toàn". Bạn đúng và giải pháp Mathias Bynens là hoàn toàn OK. Vấn đề duy nhất với hack - họ làm việc ngày hôm nay, nhưng ngày mai họ có thể phá vỡ hoặc hành xử theo một cách bất ngờ. Nhưng đó chỉ là "có thể" :) –

+0

Các trình duyệt IE truyền thống dựa trên trình phân tích cú pháp bị hỏng và CSS không hợp lệ. Mặc dù vậy, tôi có thể nghĩ về điều này: có lẽ các trình duyệt khác không hỗ trợ ': root' sẽ bị tấn công bởi quy tắc" IE "một cách vô tình, do đó, theo nghĩa đó, tôi thấy nó là hack, nhưng tôi nghi ngờ rất nhiều IE8 đột nhiên sẽ bắt đầu hỗ trợ nó. –