Remove outline from select box in FF
Well, Duopixel’s answer is plain perfect. If we go a step further we can make it bulletproof.
select:-moz-focusring {
color: transparent;
text-shadow: 0 0 0 #000;
}
Only valid for Firefox and the ugly dotted outline around the selected option is gone.
I found a solution, but it is mother of all hacks, hopefully it will serve as a starting point for other more robust solutions. The downside (too big in my opinion) is that any browser that doesn't support text-shadow
but supports rgba
(IE 9) won't render the text unless you use a library such as Modernizr (not tested, just a theory).
Firefox uses the text color to determine the color of the dotted border. So say if you do...
select {
color: rgba(0,0,0,0);
}
Firefox will render the dotted border transparent. But of course your text will be transparent too! So we must somehow display the text. text-shadow
comes to the rescue:
select {
color: rgba(0,0,0,0);
text-shadow: 0 0 0 #000;
}
We put a text shadow with no offset and no blur, so that replaces the text. Of course older browser don't understand anything of this, so we must provide a fallback for the color:
select {
color: #000;
color: rgba(0,0,0,0);
text-shadow: 0 0 0 #000;
}
This is when IE9 comes into play: it supports rgba
but not text-shadow, so you will get an apparently empty select box. Get your version of Modernizr with text-shadow
detection and do...
.no-textshadow select {
color: #000;
}
Enjoy.