Remove dotted outline from range input element in Firefox

CssHtmlFirefox

Css Problem Overview


Firefox, since version 23, natively supports the <input type="range"> element, but I couldn’t figure out how to remove the dotted outline. The following CSS has no effect:

input[type='range'], 
input[type='range']:focus, 
input[type='range']:active, 
input[type='range']::-moz-focus-inner, 
input[type='range']:-moz-focusring {
    border: 0;
    outline: none;
}

Does anyone have any idea how to fix this issue in Firefox?

Example: https://jsfiddle.net/pF37g/

Css Solutions


Solution 1 - Css

Unfortunately, you can't! (update; you now can)

It's a bug in Firefox and there is no work-around to fix this besides from fixing the source base itself (see below).

Also see Jonathan Watt's blog (who is working on this):

> Known issues: > > - the default CSS styled appearance still needs work, and native theming (giving the slider the appearance of the operating system's > theme) is still to come ...

In a reply to a comment in his blog about this very same issue he states:

> Right now you can't - sorry. I've filed bug 932410 to make that > possible.

At the moment of writing there appear to be no progress on this and it's not known when a official fix will be available.

Update

Since this answer was posted the bug has been fixed. You can now use (as stated in other answers, but I include it here for completeness):

input[type=range]::-moz-focus-outer {
    border: 0;
    }

Solution 2 - Css

It can be done with new version of Firefox. As stated here, this bug is fixed. So it is possible to hide outer dotted border. To do so, set ::-moz-focus-outer's border to 0, like this:

input[type=range]::-moz-focus-outer {
    border: 0;
}

Here is working example: http://jsfiddle.net/n2dsc/1/

In webkit browsers outer line will appear if -webkit-appearance: none; is set. To remove it, just set :focus's outline to none, like this:

input[type=range]:focus {
    outline: none;
}

Here is working example: http://jsfiddle.net/8b5Mm/1/

Solution 3 - Css

As Ken already pointed out, there is no way to remove the outline. However, there is a work-around to "hide" the outline if you know the background-color of the parent element. Assuming a white background the following CSS would hide the dotted outline:

input[type=range] {
    border: 1px solid white;
    outline: 2px solid white;
    outline-offset: -1px;
}

Your updated example: http://jsfiddle.net/9fVdd/15/

Solution 4 - Css

If you can settle for a wrapping element (it's likely you already have a wrapping LI or P), you can use FireFox-only CSS to position the input out of view and reposition the track/thumb in view.

  • Note 1 - don't try to use translateX - I think FireFox uses that to actually slide the thumb - so stick with translateY
  • Note 2 - Be sure to test with keyboard navigation. You should only move the input by the smallest amount possible to get the dotted lines out of sight. If you position it waaay far away (translateY(-1000em)) - then you will break usability for keyboard navigation.

Here ya go:

HTML

<span class="range-wrap"><input type="range" /></span>

CSS

.range-wrap {
    overflow: hidden;
}
input[type='range'] {
    -moz-transform: translateY(-3em);
}
input[type='range']::-moz-range-track {
    -moz-transform: translateY(3em)
}
input[type='range']::-moz-range-thumb {
    -moz-transform: translateY(3em);
}

http://jsfiddle.net/pF37g/98/

Solution 5 - Css

Dotted outline is not an issue, it's browser's way to show the input element is selected. What you can do is set tabIndex to -1 which will prevent your input element from taking focus on tab and, consequently, from having the outline:

<input class="size" type="range" tabIndex="-1" name="size" min="1" max="6" value="6"></input>

But after doing this you will lose some keyboard accessibility. It is better to have input element keyboard accessible.

Here is the fiddle: http://jsfiddle.net/pF37g/14/

Solution 6 - Css

If any custom styling is applied to input[type='range'] then Firefox use a different model (beta) to render the range input.

You can see the 2 different models here:

http://jsfiddle.net/pF37g/75/

Currently I do not believe it is currently possible to have a custom CSS styled input range box in Firefox to adhere to outline: 0; as of Firefox 27.0

Solution 7 - Css

To make it complete: The Bug has been fixed and now it's working with:

input[type=range]::-moz-focus-outer { border: 0; }

to remove all outlines from all input-tags use:

input::-moz-focus-inner, input::-moz-focus-outer { border: none; }

source: https://bugzilla.mozilla.org/show_bug.cgi?id=932410#c7

Solution 8 - Css

You can not. It seams to be a bug in Firefox.

It makes two outlines for the range element. One you can influence by css setting and a second, which is resistant against any manipulation.

I set the outline visible to show the issues:

input[type='range']:focus {
	outline: 5px solid green;
}

Here you can see it:

http://jsfiddle.net/pF37g/97/

Solution 9 - Css

I have little research in config section of mozilla add this too

 :-moz-any-link:focus {
    outline: none;
 }
 a, a:active, a:visited, a:hover {
    outline: 0;
}

then

:focus {
   outline: none;
}

then

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

Solution 10 - Css

Here comes the solution

:focus {
    outline:none;
}

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionalexandrrrView Question on Stackoverflow
Solution 1 - Cssuser1693593View Answer on Stackoverflow
Solution 2 - CssdugokontovView Answer on Stackoverflow
Solution 3 - CssausiView Answer on Stackoverflow
Solution 4 - CssRyan WhealeView Answer on Stackoverflow
Solution 5 - CssShalom AleichemView Answer on Stackoverflow
Solution 6 - CssFrancis KimView Answer on Stackoverflow
Solution 7 - CssMDWView Answer on Stackoverflow
Solution 8 - CssTLindigView Answer on Stackoverflow
Solution 9 - CssMiladView Answer on Stackoverflow
Solution 10 - CssFaizanView Answer on Stackoverflow