2010-01-21 7 views
7

ja zamierzam wykorzystać taką tabelę CSS dla mojego menu:CSS: Nie można zastąpienia dziedziczonych text-decoration nieruchomość

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

ale podczas próby, aby zastosować go do dokumentu

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

I znaleziono nieoczekiwane zachowanie: tekst linku zawsze pozostaje podkreślony. Co robię źle? Czy to zależy od przeglądarki (używam przeglądarki Mozilla Firefox 3.5.6, prawdopodobnie IE 6.0 wyświetla ją poprawnie)? Jeśli tak, jak mogę w ogóle polegać na CSS? Co powinienem użyć, żeby go zastąpić?

(W rzeczywistości zwykle mam dowiedział się nowych języków programowania bardzo szybko i nigdy nie miałem żadnych problemów z podstawy programowania aż zacząłem HTML i CSS. Albo jestem niezgodna z nim lub jego cech nigdy nie opisał wystarczająco dobrze.)

+0

Usuń '.menu {text-decoration: podkreślenie}'. – Sampson

+3

Nie martw się, to nie ty: CSS jest okrutną kochanką. – Ipsquiggle

+0

Szybka gra ujawnia, że ​​_may_ może być dziwaczne w Firefoksie. Z pewnością w jedynej innej przeglądarce, którą mam tutaj (IE6!) Twój kod wychodzi tak, jak byś tego oczekiwał. Firebug sugeruje również, że zgodnie z Firefox DOM, odnośnik ma "text-decoration: none", co nie jest wizualnie widoczne. – icabod

Odpowiedz

2

Po szybkiej gry z niektórych CSS, obejście (co jest okropny, ale działa) byłoby wykonać następujące czynności w CSS:

.menu span {text-decoration:underline;} 

... w miejsce pierwszy linia twojego przykładowego CSS. Następnie w HTML wykonaj następujące czynności:

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

To dalekie od doskonałości, ale to najlepsze, co mogę wymyślić na chwilę.

+0

Tak, dziękuję bardzo, działa tak, jak powiedziałem wcześniej w odpowiedzi na komentarz Ipsquiggle dotyczący odpowiedzi gracza. To rozwiązanie, ale jest częściowe, takie dziwne zachowanie może się zdarzyć w każdej chwili. Moralne: nigdy nie zamieniaj się domyślnym i podkreślonym tekstem ze standardowego znaczenia w formatowaniu html. To nie jest LOL. – Nick

0

Czy próbowałeś dodając:

.menu a {text-decoration:none} 

przed wszystkimi innymi zasadami? Wystarczy, że ustanowimy wartość domyślną, która zostanie następnie zastąpiona przez regułę a:hover.

+0

Próbowałem już, ale bez reakcji ... – Nick

+0

A co z próbowaniem tego w innych przypadkach? Dodaj '' w obrębie zakresu menu, a następnie spróbuj '.menu span {text-decoration: none;}'. Jeśli to nie zadziała, może pojawić się większy problem. – Ipsquiggle

+0

To jest dziwne. Powinno działać. Czy na pewno nie ingerujesz w żadne inne reguły CSS? – slebetman

1

Upewnij się, że jest to poprawne łącze wewnątrz href. Jeśli nie dostarczy tego stylu:

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

i href ma zawartość, niektóre przeglądarki nie będą traktować go jako link a nie domyślne renderowanie tekstu. Na przykład <a href=""> nie będzie przyjmował stylu .menu a:link, przejdzie do domyślnych stylów .menu, ponieważ nie ma łącza i nie jest renderowany jako taki przez niektóre przeglądarki.

Oczywiście zakryj swoje bazy, włączając w selektor czysty numer a.

Dodatkowo, upewnij się, że zakończyłeś te style kolorów za pomocą średników, aby uzyskać prawidłową składnię CSS.

+0

Ma odpowiednie łącze wewnątrz ... Nawet jeśli nie ma żadnego linku, to mój Firefox nadal poprawnie stosuje kolor i zmienia go po włączeniu myszy, nie można usunąć tylko podkreślenia. – Nick

+0

Czy stosujesz podkreślenia w innym miejscu w dokumencie? Być może dziedziczy po czymś innym, a .menu i .menu a są niewystarczające, by je przesłonić. Specyfikacja Google CSS, aby zrozumieć dalej - ładny tutorial tutaj http://css-tricks.com/specifics-on-css-specificity/ – neatlysliced

+0

Och, nie, nie podkreślam niczego innego, wyczyściłem przykład dokładnie tak, jak widzisz to w pytanie. – Nick

-1

Do tekstu, który chcesz podkreślić, użyj <u>blabla</u> (zrób to w HTML). To nie będzie dziedziczyć, a następny link nie zostanie podkreślony.

+0

nie pojawił się w odpowiedzi, którą właśnie napisałem, ale moim celem jest podkreślenie za pomocą liter "u" wokół tekstu. Zamiast kodu CSS używaj HTML –

Powiązane problemy