2009-09-03 10 views
19

Próbuję usunąć brzydką szare obramowanie wokół znaczników kotwicy. Właściwość CSS outline:none; działa dla przeglądarki Firefox, ale jak mogę to zrobić w IE? Najlepiej używać wyrażeń CSS lub jQuery. Nie martwię się o dostępność BTW.Wyłącza szare obramowanie na kotwicy (<a>) na elementach o ogniskowaniu


oparciu o Państwa sugestie znalazłem je za najlepsze rozwiązania:

  • jQuery (dla IE przeglądarek):

    $('a').focus(function() { 
        $(this).blur(); 
    }); 
    
  • Inną opcją jQuery (dla przeglądarek IE tylko):

    $('a').focus(function() { 
        $(this).attr("hideFocus", "hidefocus"); 
    }); 
    
  • CSS (dla wszystkich innych przeglądarek, które zmuszają konspekt):

    a { 
        outline: none; 
    } 
    

Uwaga: Niektóre przeglądarki takie jak Google Chrome nie zmuszaj konspekt na ostrości.

+0

Czy masz przykład tego, co się dzieje? –

+0

Kliknij dowolny link na tej stronie, a wokół każdego linku zobaczysz obramowanie (niekoniecznie szare) z kropkami. Możesz wyłączyć to w Firefoksie, ale dla IE potrzebujesz rozwiązania opartego na JavaScript. –

+0

Co masz na myśli mówiąc o Chrome? Dostaję pomarańczowy zarys linków, gdy je przeglądam. – DisgruntledGoat

Odpowiedz

10

Niestety myślę hideFocus jest najlepsza odpowiedź jako plama nie zawsze jest właściwe:

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

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

+1

BTW, to jest niestandardowy atrybut, a nie rozwiązanie JavaScript. Możesz ustawić to również w JavaScript za pomocą właściwości 'hideFocus', ale łatwiej ustawić ją statycznie. – mckamey

+0

Co jest nie tak z rozmyciem()? –

+0

Nie ma nic "niewłaściwego" per se, ale tracisz aktywnie skupiony element, który może mieć dziwne efekty (np. Kolejność tabulacji itp.). Istnieją również inne sposoby aktywacji linku oprócz kliknięcia (np. Klawiatura). Jeśli chcesz tylko ukryć wygląd skupienia, nie ma sensu także zmieniać ostrości, kiedy nie musisz. – mckamey

0

Czy to nie działa?

a 
{ 
    border: 0; 
} 
+0

Nie. Czy to działa dla ciebie? –

+0

granica jest czymś innym niż kontur, więc to nie zadziała. – peirix

+1

Niektóre witryny sugerują zarys: 0; jako rozwiązanie –

3

To brzmi jak mówisz granicy przerywaną, która pojawia się po kartę poprzez linki. Masz poprawne rozwiązanie dla Firefoksa (zarys: brak w CSS). Najlepszym rozwiązaniem Użyłem dla IE jest dodanie detektora onfocus który usuwa skupić:

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

Spójrz na tej stronie za przykład tego, jak można to zrobić globalnie: http://codylindley.com/Javascript/223/hiding-the-browsers-focus-borders-should-i-shouldnt-i

+2

'$ (" a "). focus (function() {this.hideFocus = true;});' dla jquery sposób robienia tego, co sugeruje ten link – gnarf

1

dla IE można użyć Javascript tak:

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

więcej: http://www.htmlgoodies.com/beyond/javascript/article.php/3471171

Dla Firefox i Safari, outlin e: żaden nie działa.

Więcej: http://css-tricks.com/removing-the-dotted-outline/

+2

Nie rób tego, łamie nawigację po klawiaturze. Użytkownicy komputerów przenośnych i różne odmiany osób niepełnosprawnych nie będą Ci wdzięczni. Istnieją obejścia takie jak tymczasowe ustawienie 'element.onfocus = element.blur' namousedown (pozbycie się go ponownie po kliknięciu), ale naprawdę hideFocus dla IE (i konturu dla innych) jest prostsze. – bobince

2

ile mi brakuje która przerywana jest granica podczas dyskusji, zarys: żaden nie działa w Internet Explorerze 8 (przynajmniej dla mnie). Raczej nagle niektóre hiperłącza renderowały się z wykropkowaną ramką (jedynym atrybutem, który pamiętam, zmieniałem, jest wyświetlanie: wstawiono element h2, który zawierał łącze, a następnie pojawiła się przerywana granica). Więc rzuciłem {outline: none; } w moim globalnym arkuszu stylów i pufu, nie ma już granicy w IE8!

+0

Tak, {outline: none} działa w IE8 i IE9, po prostu nie IE7. – mhenry1384

0

a {outline:noneIE 8} css wydaje się działać dobrze w przeglądarkach Firefox, Chrome i IE 8.

0
a { 
    outline: 0 none !important; 
    border: none; 
} 
Powiązane problemy