Come rimuovere la struttura punteggiata di Firefox sui pulsanti e i collegamenti?


507

Posso fare in modo che Firefox non mostri i brutti contorni di messa a fuoco tratteggiata sui collegamenti con questo:

a:focus { 
    outline: none; 
}

Ma come posso fare questo anche per i <button>tag? Quando faccio questo:

button:focus { 
    outline: none; 
}

i pulsanti hanno ancora il contorno del fuoco tratteggiato quando faccio clic su di essi.

(e sì, so che questo è un problema di usabilità, ma vorrei fornire i miei suggerimenti per la messa a fuoco che sono appropriati per il design invece di brutti punti grigi)


2
Sembra che in Firefox 4, gli elementi non ottengano più uno schema per impostazione predefinita quando si fa clic, ma solo quando si riceve lo stato attivo della tastiera.
Geert,

1
Quello che tu chiami "brutto" ha lo scopo di supportare l'accessibilità di un sito web. Gli utenti che utilizzano solo la tastiera non possono più determinare quale parte del sito Web è attiva quando si rimuove questo schema. Il tuo sito web sarebbe completamente inaccessibile e questo non dovrebbe mai essere il caso. Non rimuovere mai il contorno. Meglio modellarlo a modo tuo.
Markus Graf,

Risposte:


787
button::-moz-focus-inner {
  border: 0;
}

15
Sì, funziona anche per me! Ora come si può fare per le selezioni?
settimane

16
Nota che questo funziona anche per l'input (es. Input :: - moz-focus-inner {border: 0;})
El Yobo

15
Scopo del doppio colon: (notazione CSS3) evotech.net/blog/2007/05/…
sholsinger

21
Questo non ha funzionato per me, perché bootstrap.css stava facendo questi brutti pulsanti punteggiati. Invece ho messo:focus {outline:none !important;}
machineaddict

5
: focus {outline: none;} :: - moz-focus-inner {border: 0;} sarebbe meno specifico
Ben

311

Non è necessario definire un selettore.

:focus {outline:none;}
::-moz-focus-inner {border:0;}

Tuttavia, ciò viola le migliori pratiche di accessibilità del W3C. Lo schema è lì per aiutare chi naviga con le tastiere.

https://www.w3.org/TR/WCAG20-TECHS/F78.html#F78-examples


8
Grazie, questo ha funzionato per me quando la risposta corretta no. Devo aver usato il selettore sbagliato.
irl_irl,

Grazie per questo, lo rimuoverà anche su link e pulsanti?
Nathan,

3
Questo è il migliore! La risposta accettata è solo per <button>, non <a>ne<input>
Ron van der Heijden

2
Perfetto in Mozilla Firefox 30 con Ubuntu (GNU / Linux).
e-info128,

4
Ricercherò la nota su questa rottura dell'accessibilità. È importante ricordare che non tutti possono usare il mouse o vedere o vedere bene. Detto questo, il collegamento (e il buon senso) che nasconde il contorno si interrompe a11 anni quando ha finito without ... an author-supplied visual focus indicator- in altre parole, va bene sostituire lo stile user-agent con il proprio, come menzionato da OP. Idealmente dovrebbe essere ad alto contrasto.
johncip

48

Se si preferisce utilizzare i CSS per sbarazzarsi del contorno punteggiato:

/*for FireFox*/
    input[type="submit"]::-moz-focus-inner, input[type="button"]::-moz-focus-inner
    {   
        border : 0;
    } 
/*for IE8 and below */
    input[type="submit"]:focus, input[type="button"]:focus
    {     
        outline : none; 
    }

Non hai bisogno di un'unità su numeri che sono zero. 0pxpuò essere sostituito con solo0
gergo il

44

Quanto sotto ha funzionato per me in caso di LINK, pensato di condividere - nel caso qualcuno fosse interessato.

a, a:visited, a:focus, a:active, a:hover{
    outline:0 none !important;
}

Saluti!


12
Semplicemente a { outline: none; }dovrebbe essere sufficiente per i collegamenti.
concedi il

3
qui l'importante era il trucco, le altre soluzioni non lo avevano e non funzionavano. per me.
Cristiano Fontes,

Ma spesso dovresti usare a { outline: none; }con !important->a { outline: none !important; }
joryl il

24
:focus, :active {
    outline: 0;
    border: 0;
}

Ha funzionato come un incantesimo per una casella di opzione selezionata che stavo usando
Muhammad Ahsan

1
Questo non era abbastanza specifico e non volevo usare solo aelementi importanti o target , quindi ho trovato una buona opzione per essere body :focus, body :active { outline: 0; border: 0; } ::-moz-focus-inner { border: 0; }
Ivan Durst,

10

[Aggiornamento] Questa soluzione non funziona più. La soluzione che ha funzionato per me è questa https://stackoverflow.com/a/3844452/925560

La risposta contrassegnata come corretta non ha funzionato con Firefox 24.0.

Per rimuovere la struttura punteggiata di Firefox sui pulsanti e sui tag di ancoraggio ho aggiunto il codice seguente:

a:focus, a:active, 
button::-moz-focus-inner,
input[type="reset"]::-moz-focus-inner,
input[type="button"]::-moz-focus-inner,
input[type="submit"]::-moz-focus-inner,
select::-moz-focus-inner,
input[type="file"] > input[type="button"]::-moz-focus-inner {
    border: 0;
    outline : 0;
}

Ho trovato la soluzione qui: http://aghoshb.com/articles/css-how-to-remove-firefoxs-dotted-outline-on-buttons-and-anchor-tags.html


2
Non funziona più: / La soluzione che ha funzionato è questa stackoverflow.com/a/3844452/925560
Renato Carvalho,

8

Ho provato la maggior parte delle risposte qui, ma nessuna ha funzionato per me. Quando ho capito che dovevo sbarazzarmi anche del contorno blu sui pulsanti di Chrome, ho trovato un'altra soluzione. Rimuovi il bordo blu dal pulsante css in stile personalizzato in Chrome

Questo codice ha funzionato per me su Firefox versione 30 su Windows 7. Forse potrebbe aiutare qualcun altro là fuori :)

button:focus {outline:0 !important;}

Stessa cosa qui, questa è l'unica soluzione che funziona su FF 38.0.5
OlivierH,

6

Non è possibile rimuovere questo focus punteggiato in Firefox utilizzando CSS.

Se hai accesso ai computer su cui funziona la tua applicazione web, vai su about: config in Firefox e impostato browser.display.focus_ring_widthsu 0. Quindi Firefox non mostrerà alcun bordo punteggiato.

Il seguente bug spiega l'argomento: https://bugzilla.mozilla.org/show_bug.cgi?id=74225


Grazie che funziona bene, ma ho creato così tanti link in precedenza che non ho mai avuto questo problema fino ad ora. ma ora sono confuso, quindi qual è il motivo prima di presentare?
Durga Rao,

Questa risposta è ora completamente falsa. L'impostazione di ::-moz-focus-inner {border:0;}come indicato in molte altre risposte funziona perfettamente.
Andy Mercer,

@AndyM Questa risposta funziona. La soluzione presente in altre risposte è per CSS e funziona solo per singoli siti.
Rahil Wazir,

7
La domanda chiede come può essere fatto con i CSS e la risposta dice che non può essere. Questo è falso. Può essere.
Andy Mercer,

6

Ci sono molte soluzioni trovate sul web per questo, molte delle quali funzionano, ma per forzare questo, in modo che assolutamente nulla possa evidenziare / focalizzare una volta un uso quanto segue:

::-moz-focus-inner, :active, :focus {
    outline:none;
    border:0;
    -moz-outline-style: none;
}

Questo aggiunge solo un po 'di sicurezza in più e sigilla l'affare!



5

Testato su Firefox 46 e Chrome 49 utilizzando questo codice.

input:focus, textarea:focus, button:focus {
    outline: none !important;
}

Prima (i punti bianchi sono visibili)

input con punti bianchi

Dopo (i punti bianchi sono invisibili) inserisci qui la descrizione dell'immagine

Se si desidera applicare solo su pochi campi di input, pulsanti ecc. Utilizzare il codice più specifico.

input[type=text] {
  outline: none !important;
}

Buona programmazione !!


L' !importantera necessario per me per ignorare foglio di stile di Firefox. Saluti!
SamHH,

5

Aggiungi semplicemente questo css per selezionare la casella

select:-moz-focusring {
    color: transparent;
    text-shadow: 0 0 0 #000;
}

Questo funziona bene per me.


4

Penso che dovresti davvero sapere cosa stai facendo rimuovendo il contorno del focus, perché può rovinarlo per la navigazione della tastiera e l'accessibilità.

Se è necessario eliminarlo a causa di un problema di progettazione, aggiungere uno :focusstato al pulsante che lo sostituisce con qualche altro segnale visivo, come cambiare il bordo in un colore più luminoso o qualcosa del genere.

A volte sento il bisogno di togliere quel fastidioso contorno, ma preparo sempre un segnale visivo di messa a fuoco alternativa.

E non usare mai la blur()funzione js. Usa la ::-moz-focus-innerpseudo classe.


4

Nella maggior parte dei casi senza aggiungere il !important codice CSS, non funzionerà.

Quindi, non dimenticare di aggiungere !important

a, a:active, a:focus{
    outline: none !important; /* Works in Firefox, Chrome, IE8 and above */
}


O qualsiasi altro codice:

button::-moz-focus-inner {
  border: 0 !important;
}

3
button::-moz-focus-inner { border: 0; }

Dove buttonpuò essere qualunque selettore CSS per cui si desidera disabilitare il comportamento.


3

Potresti voler intensificare la messa a fuoco piuttosto che liberartene.

button::-moz-focus-inner {border: 2px solid transparent;}

button:focus::-moz-focus-inner {border-color: blue} 

2
@Nathan un po 'in ritardo ma, non avendo uno stile nello stato attivo, si rovinerà l'esperienza della tastiera. non sarai in grado di sapere cosa è focalizzato quando premi il tasto tab .
Hkan,

@Hkan Sì, sono d'accordo. Ma la struttura di Firefox è brutta soprattutto quando si trova attorno a un bordo di messa a fuoco personalizzato.
Nathan,

@Nathan Sono completamente d'accordo. Quello che dovremmo fare è fornire il nostro stile per lo stato di messa a fuoco piuttosto che rendere gli elementi uguali su tale stato.
Hkan,

3

Rimuovi il contorno punteggiato da link, pulsante ed elemento di input.

a:focus, a:active,
button::-moz-focus-inner,
input[type="reset"]::-moz-focus-inner,
input[type="button"]::-moz-focus-inner,
input[type="submit"]::-moz-focus-inner {
    border: 0;
    outline : 0;
}

3

Se hai un bordo su un pulsante e vuoi nascondere il contorno tratteggiato in Firefox senza rimuovere il bordo (e quindi la larghezza extra sul pulsante) puoi usare:

.button::-moz-focus-inner {
    border-color: transparent;
}

3

Il codice CSS di seguito funziona per rimuovere questo:

a:focus, a:active, 
button::-moz-focus-inner,
input[type="reset"]::-moz-focus-inner,
input[type="button"]::-moz-focus-inner,
input[type="submit"]::-moz-focus-inner,
select::-moz-focus-inner,
input[type="file"] > input[type="button"]::-moz-focus-inner {
    border: 0;
    outline : 0;
}

2

Sembra che l'unico modo per raggiungere questo obiettivo sia l'impostazione

browser.display.focus_ring_width = 0

in about: config per browser.


1

Funziona su Firefox v-27.0

 .buttonClassName:focus {
  outline:none;
}

1

Dopo aver provato molte opzioni di cui sopra, solo le seguenti hanno funzionato per me.

*:focus, *:visited, *:active, *:hover  { outline:0 !important;}
*::-moz-focus-inner {border:0;}

In realtà (almeno in Firefox 77), hai solo bisogno di: button:focus { outline: none !important } o se ti piaccio non ti piace! Importante, questo funziona anche per sovrascrivere lo stile di Firefox: :root button:focus { outline: none }
Jonas Sandstedt

1

Insieme a Bootstrap 3 ho usato questo codice. La seconda serie di regole annulla semplicemente ciò che fa bootstrap per i pulsanti focus / active:

button::-moz-focus-inner {
  border: 0;    /*removes dotted lines around buttons*/
}

.btn.active.focus, .btn.active:focus, .btn.focus, .btn.focus:active, .btn:active:focus, .btn:focus{
  outline:0;
}

NOTA che il tuo file CSS personalizzato dovrebbe venire dopo il file CSS Bootstrap nel tuo codice HTML per sovrascriverlo.


1

Sì, non perdere ! Importante

button::-moz-focus-inner {
 border: 0 !important;
}

! important non fa parte della risposta qui, e se la tua app ne ha bisogno allora hai problemi più grandi da risolvere rispetto ai punti salienti intorno ai tuoi pulsanti. Sforzati sempre di evitare! Importante.
Monokrome,

0

Puoi provare button::-moz-focus-inner {border: 0px solid transparent;}nel tuo CSS.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.