2010-01-21 23 views
7

Tôi sẽ sử dụng bảng CSS như thế cho trình đơn của tôi:CSS: Không thể ghi đè thừa hưởng text-decoration tài sản

.menu {text-decoration:underline;} 
.menu a:link {text-decoration:none; color:#0202C0} 
.menu a:active {text-decoration:none; color:#0202C0} 
.menu a:visited {text-decoration:none; color:#0202C0} 
.menu a:hover {text-decoration:underline; color:#0099FF} 

nhưng trong khi cố gắng để áp dụng nó vào các tài liệu

<span class="menu"> 
    Some underlined text came here... 
    <a href="...">this text should not be underlined until mouse on!</a> 
</span> 

tôi đã tìm thấy hành vi không mong muốn: văn bản liên kết luôn được gạch dưới. Tôi đang làm gì sai? Nó có thể phụ thuộc vào trình duyệt (tôi đang sử dụng Mozilla Firefox 3.5.6, có thể IE 6.0 hiển thị đúng cách)? Nếu vậy, làm thế nào tôi có thể dựa vào CSS? Tôi nên sử dụng cái gì để thay thế nó?

(Thực tế là tôi đã học các ngôn ngữ lập trình mới rất nhanh và không bao giờ gặp vấn đề với cơ sở lập trình cho đến khi tôi bắt đầu HTML và CSS. Hoặc tôi không tương thích với nó hoặc các tính năng của nó chưa bao giờ được kể lại đủ.)

+0

Xóa '.menu {text-decoration: underline}'. – Sampson

+3

Đừng lo lắng, đó không phải là bạn: CSS là một người tình độc ác. – Ipsquiggle

+0

Một phát nhanh cho thấy rằng _may_ này là một sự kỳ quặc của Firefox. Chắc chắn trong trình duyệt khác duy nhất tôi có ở đây (IE6!) Mã của bạn đi ra như bạn mong đợi. Ngoài ra, Firebug đề xuất rằng theo DOM của Firefox, liên kết có "text-decoration: none", không phải là trường hợp trực quan. – icabod

Trả lời

2

Sau một vở kịch nhanh chóng với một số CSS, một workaround (đó là khủng nhưng hoạt động) sẽ được thực hiện như sau trong CSS của bạn:

.menu span {text-decoration:underline;} 

... ở vị trí của đầu tiên dòng CSS mẫu của bạn. Sau đó, trong HTML, hãy làm như sau:

<span class="menu"> 
    <span>Some underlined text came here...</span> 
    <a href="...">this text should not be underlined until mouse on!</a> 
    <span>Some more underlined text came here...</span> 
</span> 

Nó không hoàn hảo, nhưng tốt nhất là tôi có thể nghĩ ra ngay bây giờ.

+0

Vâng, cảm ơn rất nhiều, nó hoạt động như tôi đã nói trước đó trong câu trả lời cho nhận xét của Ipsquiggle về câu trả lời của slebetman. Đó là giải pháp, nhưng nó là một phần, hành vi kỳ lạ như vậy có thể xảy ra bất cứ lúc nào. Đạo đức: không bao giờ trao đổi sự hiểu biết về văn bản mặc định và nhấn mạnh từ ý nghĩa chuẩn trong định dạng html. Nó không phải là LOL. – Nick

0

Bạn đã thử thêm:

.menu a {text-decoration:none} 

trước tất cả các quy tắc khác? Chỉ cần thiết lập mặc định sau đó được ghi đè theo quy tắc a:hover.

+0

Tôi đã thử ngay bây giờ, nhưng không có phản ứng ... – Nick

+0

Điều gì về việc thử điều này trong các trường hợp khác? Thêm một '' trong khoảng menu, và sau đó thử '.menu span {text-decoration: none;}'. Nếu điều đó không hiệu quả, có thể có vấn đề lớn hơn. – Ipsquiggle

+0

Điều này thật kỳ lạ. Nó sẽ hoạt động. Bạn có chắc chắn không có quy tắc css khác can thiệp? – slebetman

1

Đảm bảo rằng đó là một liên kết hợp lệ bên trong href. Nếu bạn không cung cấp phong cách này:

.menu a, .menu a:link{my styles} 

href không có nội dung, một số trình duyệt sẽ không đối xử với nó như một liên kết và làm mặc định việc vẽ chữ. Ví dụ: <a href=""> sẽ không theo kiểu .menu a:link, nó sẽ chuyển sang kiểu mặc định .menu vì không có liên kết và nó không được hiển thị như vậy bởi một số trình duyệt.

Tất nhiên, bao gồm các căn cứ của bạn bằng cách bao gồm dấu gạch ngang a trong bộ chọn của bạn.

Ngoài ra, hãy đảm bảo bạn kết thúc các kiểu màu đó bằng dấu chấm phẩy cho cú pháp CSS thích hợp.

+0

Nó có liên kết thích hợp bên trong ... Ngay cả khi không có bất kỳ liên kết nào, Firefox của tôi vẫn áp dụng màu đúng cách và thay đổi nó khi bạn bật chuột, chỉ gạch dưới không thể xóa được. – Nick

+0

Bạn đang áp dụng gạch dưới ở nơi khác trong tài liệu? Có lẽ nó được thừa kế từ cái gì khác, và .menu và .menu a là không đủ để ghi đè lên nó. Google CSS Specificity để hiểu rõ hơn - hướng dẫn hay tại đây http://css-tricks.com/specifics-on-css-specificity/ – neatlysliced

+0

Ồ, không, tôi không gạch dưới bất cứ điều gì khác, tôi đã làm sạch ví dụ chính xác như bạn thấy trong câu hỏi. – Nick

-1

Để văn bản bạn muốn gạch dưới, hãy sử dụng <u>blabla</u> (thực hiện theo cách HTML). Điều này sẽ không kế thừa và liên kết tiếp theo của bạn sẽ không được gạch chân.

+0

nó không hiển thị trên câu trả lời tôi vừa đăng nhưng quan điểm của tôi là, bạn nên gạch chân bằng cách sử dụng các chữ "u" xung quanh văn bản. Sử dụng HTML đôi khi thay vì CSS –

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