2009-09-03 1 views
19

Ich versuche, die hässliche graue Grenze, die um Anker-Tags erscheint weggehen. Die CSS-Eigenschaft outline:none; funktioniert für Firefox, aber wie kann ich es in IE tun? Vorzugsweise mit CSS-Ausdrücken oder jQuery. Ich mache mir keine Sorgen über die Zugänglichkeit BTW.Deaktivieren Sie die graue Grenze auf Anker (<a>) Elemente auf Fokus


Basierend auf Ihre Anregungen fand ich diese die besten Lösungen zu sein:

  • Die jQuery (für IE-Browser):

    $('a').focus(function() { 
        $(this).blur(); 
    }); 
    
  • Eine weitere jQuery Option (für IE-Browser nur):

    $('a').focus(function() { 
        $(this).attr("hideFocus", "hidefocus"); 
    }); 
    
  • Die CSS (für alle anderen Browser, die einen Umriss erzwingen):

    a { 
        outline: none; 
    } 
    

Hinweis: Einige Browser wie Google Chrome nicht mit Gewalt einen Umriss auf Fokus.

+0

Haben Sie ein Beispiel dafür, was passiert? –

+0

Klicken Sie auf einen beliebigen Link auf dieser Seite und Sie werden einen umrandeten Rand (nicht unbedingt grau) um jeden Link sehen. Sie können dies in Firefox deaktivieren, aber für IE benötigen Sie eine JavaScript-basierte Lösung. –

+0

Was meinst du mit Chrome? Ich erhalte einen orangefarbenen Umriss auf den Links, wenn ich sie durchblättere. – DisgruntledGoat

Antwort

10

Leider denke ich hideFocus ist die beste Antwort als Unschärfe nicht immer angemessen ist:

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

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

+1

BTW, dies ist ein Nicht-Standard-Attribut, keine JavaScript-Lösung. Sie können dies auch in JavaScript mit der 'hideFocus'-Eigenschaft einstellen, aber es ist einfacher, sie einfach statisch zu setzen. – mckamey

+0

Was ist mit Unschärfe() falsch? –

+0

Es ist nichts "falsch" an sich, aber Sie verlieren das aktiv fokussierte Element, das seltsame Effekte haben kann (z. B. Tab-Reihenfolge, etc.). Es gibt auch andere Möglichkeiten zum Aktivieren der Verbindung neben dem Klicken (z. B. Tastatur). Wenn Sie nur den Schein der Fokussierung verbergen wollen, dann hat es keinen Sinn, den Fokus zu ändern, wenn Sie es nicht müssen. – mckamey

0

Funktioniert das nicht?

+0

Nein. Hat es für dich funktioniert? –

+0

Grenze ist etwas anderes als Umriss, so dass es nicht funktionieren würde. – peirix

+1

Einige Websites haben vorgeschlagen, umriss: 0; als Lösung –

3

Es klingt, als ob Sie über die gepunktete Grenze sprechen, die angezeigt wird, wenn Sie über Verknüpfungen navigieren. Sie haben die richtige Lösung für Firefox (Outline: keine in der CSS). Die beste Lösung, die ich für IE verwendet habe, ist ein onfocus Zuhörer hinzufügen, das den Fokus entfernt:

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

Schauen Sie sich auf dieser Seite finden Sie ein Beispiel dafür, wie man es global tun könnten: http://codylindley.com/Javascript/223/hiding-the-browsers-focus-borders-should-i-shouldnt-i

+2

'$ (" a "). focus (function() {this.hideFocus = true;});' für die jquery Art zu tun, was dieser Link vorschlägt – gnarf

1

Für IE

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

Lesen Sie mehr: http://www.htmlgoodies.com/beyond/javascript/article.php/3471171

Für Firefox und Safari, outlin, können Sie Javascript wie folgt verwenden e: keine funktioniert.

mehr lesen: http://css-tricks.com/removing-the-dotted-outline/

+2

Tun Sie dies nicht, es bricht Tastaturnavigation. Laptop-Benutzer und verschiedene Arten von Menschen mit Behinderungen werden Ihnen nicht danken. Es gibt Workarounds wie zeitweilige Einstellung von 'element.onfocus = element.blur' onmousedown (nach dem Klick wieder loswerden), aber wirklich hideFocus für IE (und Gliederung für die anderen) ist einfacher. – bobince

2

Es sei denn, ich bin fehlt die Grenze übersät ist diskutiert werden, skizzieren: keine funktioniert in Internet Explorer 8 (zumindest für mich). Stattdessen wurden einige Hyperlinks mit einem gepunkteten Rahmen gerendert (das einzige Attribut, an das ich mich erinnere, ist display: inline auf einem h2-Element, das einen Link enthielt, danach erschien der gepunktete Rand). Also warf ich eine Skizze ein: keine; } in meinem globalen Stylesheet und poof, kein Rahmen mehr in IE8!

+0

Ja, {Umriss: keine} funktioniert in IE8 und IE9, nur nicht IE7. – mhenry1384

0

a {outline:noneIE 8} css scheint in Firefox, Chrome und IE 8 gut zu funktionieren.

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