Удалить пунктирную линию из элемента ввода диапазона в Firefox
Firefox, начиная с версии 23, изначально поддерживает элемент <input type="range">
, но я не мог понять, как удалить пунктирный контур. Следующий CSS не имеет никакого эффекта:
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;
}
Кто-нибудь знает, как исправить эту проблему в Firefox?
Пример: http://jsfiddle.net/pF37g/
Ответы
Ответ 1
К сожалению, вы не можете!
Это ошибка в Firefox, и нет необходимости исправлять это, кроме исправления самой исходной базы (см. ниже).
Также см. Jonathan Watt blog (кто работает над этим):
Известные проблемы:
- стиль CSS по умолчанию по-прежнему нуждается в работе, а родная тематика (предоставление слайдеру внешнего вида операционной системы тема) еще впереди...
В ответ на комментарий в своем блоге об этой же проблеме он заявляет:
Прямо сейчас вы не можете - извините. Я подал ошибку 932410, чтобы сделать это возможно.
На момент написания здесь не было никакого прогресса, и неизвестно, когда будет доступно официальное исправление.
Обновление
Поскольку этот ответ был опубликован, исправлена ошибка. Теперь вы можете использовать (как указано в других ответах, но я включаю его здесь для полноты):
input[type=range]::-moz-focus-outer {
border: 0;
}
Ответ 2
Как уже указывал Кен, нет способа удалить контур. Однако, если вы знаете фоновый цвет родительского элемента, есть "обход", чтобы "скрыть" контур. Предполагая белый фон, следующий CSS скроет пунктирный контур:
input[type=range] {
border: 1px solid white;
outline: 2px solid white;
outline-offset: -1px;
}
Ваш обновленный пример: http://jsfiddle.net/9fVdd/15/
Ответ 3
Это может сделать с новой версией Firefox. Как указано здесь, эта ошибка исправлена. Таким образом, можно скрыть внешнюю пунктирную границу. Для этого установите ::-moz-focus-outer
border равным 0, например:
input[type=range]::-moz-focus-outer {
border: 0;
}
Вот рабочий пример: http://jsfiddle.net/n2dsc/1/
В браузерах веб-браузера внешняя строка появится, если установлен -webkit-appearance: none;
. Чтобы удалить его, просто установите :focus
контур на none, например:
input[type=range]:focus {
outline: none;
}
Вот рабочий пример: http://jsfiddle.net/8b5Mm/1/
Ответ 4
Если вы можете согласиться на элемент упаковки (вероятно, у вас уже есть обертка LI
или P
), вы можете использовать CSS только для FireFox, чтобы помещать ввод вне поля зрения и перемещать вид дорожки/большого пальца.
- Примечание 1 - не пытайтесь использовать
translateX
- я думаю, что FireFox использует это, чтобы на самом деле скользить большой палец - поэтому придерживайтесь translateY
- Примечание 2 - Обязательно проверяйте клавиатуру. Вы должны только перемещать вход на минимальное количество, чтобы получить пунктирные линии с глаз долой. Если вы разместите его вдали (
translateY(-1000em)
), то вы нарушите юзабилити для навигации по клавиатуре.
Здесь 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/
Ответ 5
Пунктирный контур не является проблемой, выбран способ браузера показать элемент ввода. Вы можете установить tabIndex
-1, что не позволит элементу input
не сфокусироваться на вкладке и, следовательно, будет иметь контур:
<input class="size" type="range" tabIndex="-1" name="size" min="1" max="6" value="6"></input>
Но после этого вы потеряете доступность клавиатуры. Лучше иметь доступную клавиатуру элемента input
.
Вот скрипка: http://jsfiddle.net/pF37g/14/
Ответ 6
Если какой-либо пользовательский стиль применяется к input[type='range']
, то Firefox использует другую модель (beta), чтобы отобразить ввод диапазона.
Здесь вы можете увидеть 2 разных модели:
http://jsfiddle.net/pF37g/75/
В настоящее время я не верю, что в настоящее время возможно иметь пользовательский диапазон ввода ввода в стиле CSS в Firefox, чтобы придерживаться outline: 0;
с Firefox 27.0
Ответ 7
Чтобы сделать это: ошибка была исправлена и теперь она работает с:
input[type=range]::-moz-focus-outer { border: 0; }
чтобы удалить все контуры всех используемых тэгов:
input::-moz-focus-inner, input::-moz-focus-outer { border: none; }
источник: https://bugzilla.mozilla.org/show_bug.cgi?id=932410#c7
Ответ 8
Вы не можете. Это швы, чтобы быть ошибкой в Firefox.
Он создает две контуры для элемента диапазона. Один из них может влиять на настройку css, а второй - устойчив к любым манипуляциям.
Я установил видимый контур, чтобы показать проблемы:
input[type='range']:focus {
outline: 5px solid green;
}
Здесь вы можете увидеть его:
http://jsfiddle.net/pF37g/97/
Ответ 9
У меня мало исследований в разделе конфигурации mozilla, добавьте это тоже
:-moz-any-link:focus {
outline: none;
}
a, a:active, a:visited, a:hover {
outline: 0;
}
затем
:focus {
outline: none;
}
затем
::-moz-focus-inner {
border: 0;
}
Ответ 10
Здесь идет решение
:focus {
outline:none;
}
::-moz-focus-inner {
border:0;
}