2010-01-21 21 views
7

Voy a utilizar dicha tabla CSS para mi menú:CSS: No se pudo invalidar heredado la propiedad text-decoration

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

pero al tratar de aplicarla al documento

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

I encontró un comportamiento inesperado: el texto del enlace siempre permanece subrayado. ¿Qué estoy haciendo mal? ¿Podría depender del navegador (estoy usando Mozilla Firefox 3.5.6, probablemente IE 6.0 lo muestre correctamente)? Si es así, ¿cómo puedo confiar en CSS? ¿Qué debería usar para sustituirlo?

(De hecho normalmente yo nos aprendido nuevos lenguajes de programación muy rápidamente y nunca tuvimos ningún problema con bases de programación hasta que empecé a HTML y CSS. O yo soy incompatible con ella o sus características nunca fue contado lo suficientemente bien.)

+0

Eliminar '.menu {text-decoration: underline}'. – Sampson

+3

No se preocupe, no es usted: CSS es una amante cruel. – Ipsquiggle

+0

Un juego rápido revela que esta _may_ puede ser una rareza de Firefox. Ciertamente, en el único otro navegador que tengo aquí (IE6!) Su código sale como es de esperar. Además, Firebug sugiere que de acuerdo con el DOM de Firefox, el enlace tiene "texto-decoración: ninguno", que no es el caso visualmente. – icabod

Respuesta

2

después de una jugada rápida con un poco de CSS, una solución (que es horrible , pero hace el trabajo) sería hacer lo siguiente en su CSS:

.menu span {text-decoration:underline;} 

... en lugar de la primera línea de su muestra CSS. Luego, en el código HTML haga lo siguiente:

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

Está lejos de ser perfecto, pero es lo mejor que puedo llegar a por el momento.

+0

Sí, muchas gracias, funciona como dije antes en la respuesta al comentario de Ipsquiggle de la respuesta de slebetman. Es una solución, pero es parcial, un comportamiento tan extraño podría suceder en cualquier momento. Moraleja: nunca intercambie la comprensión del texto predeterminado y enfatizado del significado estándar en el formato html. No es LOL. – Nick

0

Ha intentado añadir:

.menu a {text-decoration:none} 

antes de todas las otras reglas? Solo para establecer un valor predeterminado que luego se reemplaza por la regla a:hover.

+0

Lo he intentado ahora, pero no hay ninguna reacción ... – Nick

+0

¿Qué hay de intentar esto en otros casos? Agregue un '' dentro del intervalo del menú, y luego intente con '.menu span {text-decoration: none;}'. Si eso no funciona, puede haber un problema mayor. – Ipsquiggle

+0

Esto es extraño. Deberia de funcionar. ¿Estás seguro de que no hay otras reglas de CSS interfiriendo? – slebetman

1

Asegúrese de que es un enlace válido dentro de la href. Si no se proporciona este estilo:

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

y la href tiene ningún contenido, algunos navegadores no tratarlo como un enlace y no por defecto representación de texto. Por ejemplo, <a href=""> no tomará el estilo de .menu a:link, irá a los estilos predeterminados .menu porque no hay ningún enlace y no se representa como tal en algunos navegadores.

Por supuesto, cubra sus bases incluyendo a en su selector.

Además, asegúrese de finalizar esos estilos de color con punto y coma para la sintaxis correcta de CSS.

+0

Tiene un enlace apropiado dentro ... Aunque no tenga ningún enlace, mi Firefox aún aplica color correctamente y lo cambia cuando el mouse está activado, solo el subrayado no se pudo eliminar. – Nick

+0

¿Está aplicando subrayados en algún otro lugar del documento? Tal vez está heredando de otra cosa, y .menu y .menu a es insuficiente para anularlo. Especificidad de Google CSS para comprender más: buen tutorial aquí http://css-tricks.com/specifics-on-css-specificity/ – neatlysliced

+0

Oh, no, no estoy subrayando nada más, limpie el ejemplo exactamente como lo ves en pregunta. – Nick

-1

Para el texto que desea subrayar, use <u>blabla</u> (hágalo de la manera HTML). Esto no heredará y su próximo enlace no aparecerá subrayado.

+0

no apareció en la respuesta que acabo de publicar, pero mi punto es que debe subrayar el uso de las letras "u" alrededor del texto. Use HTML a veces en lugar de CSS –

Cuestiones relacionadas