2009-09-03 35 views
19

Estoy tratando de que el feo borde gris que aparece alrededor de las etiquetas de anclaje desaparezca. La propiedad CSS outline:none; funciona para Firefox, pero ¿cómo puedo hacerlo en IE? Preferiblemente utilizando expresiones CSS o jQuery. No estoy preocupado por la accesibilidad por cierto.Deshabilitar el borde gris en los elementos de ancla (<a>) en el foco


Sobre la base de sus sugerencias He encontrado estos a ser las mejores soluciones:

  • Los jQuery (para IE navegadores):

    $('a').focus(function() { 
        $(this).blur(); 
    }); 
    
  • Otra opción jQuery (para navegadores IE solamente):

    $('a').focus(function() { 
        $(this).attr("hideFocus", "hidefocus"); 
    }); 
    
  • El CSS (para los demás navegadores que obligan a un esquema):

    a { 
        outline: none; 
    } 
    

Nota: Algunos navegadores como Google Chrome no obligan a un esquema de enfoque.

+0

¿Tiene un ejemplo de lo que está sucediendo? –

+0

Haga clic en cualquier enlace de esta página y verá un borde punteado (no necesariamente gris) en cada enlace. Puede desactivar esto en Firefox, pero para IE necesita una solución basada en JavaScript. –

+0

¿Qué quieres decir con respecto a Chrome? Obtengo un contorno naranja en los enlaces cuando los hojeo. – DisgruntledGoat

Respuesta

10

Desafortunadamente, creo que hideFocus es su mejor respuesta como la falta de definición no siempre es apropiado:

<a href="..." hidefocus="hidefocus">...</a> 

http://msdn.microsoft.com/en-us/library/ms533783(VS.85).aspx

+1

Por cierto, este es un atributo no estándar, no una solución de JavaScript. También puede configurar esto en JavaScript con la propiedad 'hideFocus', pero es más fácil establecerlo estáticamente. – mckamey

+0

¿Qué pasa con blur()? –

+0

No hay nada "incorrecto" per se pero pierde el elemento activamente enfocado que puede tener efectos impares (por ejemplo, orden de tabulación, etc.). También hay otras formas de activar el enlace además de hacer clic (por ejemplo, teclado). Si todo lo que quiere es ocultar la apariencia de estar enfocado, entonces no tiene sentido cambiar también el enfoque cuando no es necesario. – mckamey

0

¿Esto no funciona?

a 
{ 
    border: 0; 
} 
+0

No. ¿Funcionó para ti? –

+0

borde es algo diferente de contorno, por lo que no funcionaría. – peirix

+1

Algunos sitios web han sugerido un esquema: 0; como una solución –

3

suena como que está hablando el borde de puntos que aparece cuando salta a través de enlaces. Tienes la solución correcta para Firefox (esquema: ninguno en el CSS). La mejor solución que he usado para IE es añadir un detector de onfocus que elimina enfoque:

<a href="" onfocus="this.hideFocus=true;">link</a> 

Tome un vistazo a este sitio para obtener un ejemplo de cómo puede hacerlo a nivel mundial: http://codylindley.com/Javascript/223/hiding-the-browsers-focus-borders-should-i-shouldnt-i

+2

'$ (" a "). focus (function() {this.hideFocus = true;});' para la manera jquery de hacer lo que ese enlace sugiere – gnarf

1

para IE , puede utilizar Javascript así:

<a href="..." onfocus="this.blur();">Click Here</a> 

Leer más: http://www.htmlgoodies.com/beyond/javascript/article.php/3471171

Para Firefox y Safari, outlin e: ninguno funciona.

Leer más: http://css-tricks.com/removing-the-dotted-outline/

+2

No haga esto, se rompe la navegación del teclado. Los usuarios de computadoras portátiles y diversas variedades de personas con discapacidad no se lo agradecerán. Hay soluciones temporales, como establecer temporalmente 'element.onfocus = element.blur' onmousedown (deshacerse de él de nuevo después del clic), pero realmente hideFocus para IE (y esquema para los demás) es más simple. – bobince

2

A menos que me falta, que es salpicada frontera discutido, esquema: ninguno funciona en Internet Explorer 8 (al menos, para mí). Más bien, de repente, algunos hipervínculos se representaban con un borde punteado (el único atributo que recuerdo que cambia es mostrar: en línea en un elemento h2 que contenía un enlace, luego apareció el borde punteado). Así que lancé un {outline: ninguno; } en mi hoja de estilo global y poof, ¡no más fronteras en IE8!

+0

Sí, {esbozo: none} funciona en IE8 e IE9, pero no IE7. – mhenry1384

0

a {outline:noneIE 8} css parece funcionar bien en Firefox, Chrome e IE 8.

0
a { 
    outline: 0 none !important; 
    border: none; 
} 
Cuestiones relacionadas