How can I remove the dotted lines on a SELECT/OPTION dropdown control in Firefox?

16.8k views Asked by At

In Chrome and other browsers my dropdown looks fine:

enter image description here

However, in Firefox it has unwanted dotted lines:

enter image description here

I have successfully removed the unwanted Firefox dotted lines for buttons and input elements with these CSS statements:

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

so I thought these would work for the select/option elements, but they don't:

select::-moz-focus-inner { border: 0; }
option::-moz-focus-inner { border: 0; }

How can I remove the dotted lines in this dropdown so that it appears as in Chrome and other browsers?

Addendum

These don't work either:

select::-moz-focus-inner { border: 0; outline: 0 }
option::-moz-focus-inner { border: 0; outline: 0 }

nor these:

select { outline: 0; }
option { outline: 0; }

nor these:

select { outline: none; }
option { outline: none; }
5

There are 5 answers

2
exus On

try using outline: 0, works for buttons

1
kirilloid On

Here's combined hack for that:

select:focus {
    outline: 1px solid white;
    outline-offset: -2px;
}
select ~ input[type=button] {
    -moz-appearance: menulist-button;
    margin-left: -19px;
    width: 18px;
    height: 18px;
    z-index: 10;
}

Then add input with tabindex=0 after each select And some code for focus "delegation":

$("select ~ input[type=button]").addEvent('focus', function(){
  this.getPrevious().focus();
});
1
istr On

James Broad's answer is nearly perfect, but the "shadow-only" text for the option items looks ugly. This is what works perfectly for me:

select:-moz-focusring {
  color:transparent;
  text-shadow:0 0 0 #000; /* your normal text color here */
}
select:-moz-focusring * {
  color:#000; /* your normal text color here */
  text-shadow:none;
}
1
James Broad On

the solution found on https://stackoverflow.com/a/18853002/728855 seems to work perfectly.

In short:

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

Where #000 is your text colour.

0
Bruno Wego On

In case of using with required, like the code below:

<select required="true">
    <option value="" selected="true" disabled="true" hidden="true">Select a Option</option>
    <option value="">Option</option>
</select>

You will need set the same parameters for select:required:invalid like below:

select {
  &:required {
    &:invalid {
      color: transparent;
      text-shadow: 0 0 0 rgba(0, 0, 0, .4);
    }
  }

  &:-moz-focusring {
    color: transparent;
    text-shadow: 0 0 0 rgba(0, 0, 0, .4);
  }
}