2009-02-04 37 views
34

Tôi đã đặt một số kiểu cho thẻ h2 (màu, cỡ chữ, v.v.), nhưng khi tôi đặt thẻ "A" vào bên trong, thì kiểu trở thành liên kết. My html:Thừa kế CSS IE7 không hoạt động

<h2> 
    <a class="no-decor" href="http://localhost/xxx/">Link</a> 
</h2> 

Vì vậy, bạn có thể thấy, tôi đã tạo lớp "không trang trí". Nó nên kế thừa phong cách của h2 cho thẻ "a".

a.no-decor { 
    color:inherit; 
    font-family:inherit; 
    font-size:inherit; 
    font-weight:inherit; 
    text-decoration:inherit; 
} 

Trên Firefox everythig là ok, nhưng IE vẫn hiển thị thẻ "a" style (gạch dưới văn bản trang trí và màu xanh dương). Tôi biết, tôi có thể thiết lập một số phong cách cho "h2 a", nhưng có lẽ bằng cách nào đó nó có thể buộc các giá trị kế thừa CSS công việc trên IE7?

P.S. Trên IE6 không hỗ trợ quá.

P.P.S. Có một số ví dụ theo cùng một cách: http://www.brunildo.org/test/inherit.html

Trả lời

55

Không, IE đã không bao giờ được hỗ trợ inherit cho bất kỳ tài sản - lấy làm tiếc. Điều này đã được sửa trong> = IE8.

Trong khi bạn có thể sử dụng một sửa chữa hoạt Javascript để sao chép các thuộc tính từ h2 để a, có lẽ đơn giản nhất chỉ để áp dụng các quy tắc phong cách tương tự để cả hai yếu tố:

h2, h2 a { 
    font: something; 
    color: black; 
    text-decoration: none; 
} 

Bạn không cần phải thiết lập inherit trên dù sao trang trí văn bản, bởi vì trang trí không thừa kế từ cha mẹ vào một đứa trẻ: hiệu ứng gạch chân là trên bố mẹ và đi thông qua đứa trẻ; đứa trẻ không thể loại bỏ nó (modulo IE bugs). 'Text-decoration: none' trên con là điều đúng đắn, trừ khi bạn muốn có khả năng hai nhấn mạnh ...

+0

Có, tôi đã thực hiện theo cách này. – Pawka

+14

Internet Explorer 7 và các phiên bản cũ hơn không hỗ trợ giá trị được kế thừa cho bất kỳ thuộc tính nào ngoài hướng và mức hiển thị. –

+0

Điều này hoàn hảo :) –

4

Lỗi của lỗi và bạn không thể làm gì nhiều, thiếu các giải pháp.

Có thử nghiệm về hỗ trợ kế thừa here.

Bạn cũng có thể thử sử dụng một kịch bản như ie7-js, mà "là một thư viện JavaScript để làm cho Microsoft Internet Explorer cư xử như một trình duyệt tiêu chuẩn phù hợp"

16

thử

a.no-decor{ 
    color:inherit; 
    //color:expression(this.parentNode.currentStyle['color']); 
    text-decoration:none; 
} 

Điều đó sẽ thoát khỏi màu xanh của bạn và gạch dưới . Bạn có thể sử dụng một biểu thức tương tự cho gạch dưới, nhưng bạn nên sử dụng text-decoration: không có gì vì đó là tất cả văn bản được thừa kế sẽ cung cấp cho bạn dù sao và không cần sử dụng các biểu thức khi không thực sự cần thiết (bạn ' sẽ có hiệu suất khi sử dụng biểu thức).

+0

Lần đầu tiên tôi thấy: biểu thức. Giải pháp thanh lịch hơn so với đánh dấu trùng lặp hoặc sử dụng thư viện JS. – Stijn

+0

Tôi thích điều này. Đó là một trường hợp như vậy đối với tôi rằng một biểu hiện là hoàn hảo ở đây. – lupos

1

Internet Explorer < = 7 phiên bản không hỗ trợ giá trị inherit cho bất kỳ thuộc tính nào khác ngoài directionvisibility.

+0

Như đã đề cập trong [bình luận này] (http: // stackoverflow.com/questions/511066/ie7-css-inheritance-does-not-work # comment1873681_511108) vào ngày 25 tháng 12 năm 2009. – WynandB

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