Я могу заставить Firefox не отображать уродливые пунктирные контуры фокуса на ссылки следующим образом:
a:focus {
outline: none;
}
Но как я могу сделать это и для тегов <button>? Когда я это сделаю:
button:focus {
outline: none;
}
когда я нажимаю на кнопки, они все еще имеют точечный контур фокуса.
(и да, я знаю, что это проблема удобства использования, но я хотел бы предоставить свои собственные подсказки, которые подходят для дизайна, а не уродливые серые точки)
То, что вы называете «уродливым», предназначено для поддержки доступности веб-сайта. Пользователи, работающие только с клавиатурой, больше не могут определять, какая часть веб-сайта находится в фокусе при удалении этого контура. Ваш веб-сайт будет полностью недоступен, и этого не должно быть. Никогда не удаляйте контур. Лучше оформляйте это по-своему.






Невозможно удалить этот пунктирный фокус в Firefox с помощью CSS.
Если у вас есть доступ к компьютерам, на которых работает ваше веб-приложение, перейдите к about: config в Firefox и установите browser.display.focus_ring_width на 0. Тогда Firefox вообще не будет показывать пунктирные границы.
Следующая ошибка объясняет тему: https://bugzilla.mozilla.org/show_bug.cgi?id=74225
Спасибо, он работает нормально, но я создал так много ссылок, что до сих пор не сталкивался с этой проблемой. но теперь я в замешательстве, так какова причина предыдущего представления?
Этот ответ теперь полностью ложен. Установка ::-moz-focus-inner {border:0;}, как упоминалось в нескольких других ответах, отлично работает.
@AndyM Этот ответ действительно работает. Решение, представленное в других ответах, предназначено для CSS и работает только для отдельных сайтов.
Вопрос спрашивает, как это можно сделать с помощью CSS, а ответ говорит, что этого не может быть. Это неправда. Может быть.
Похоже, что единственный способ добиться этого - установить
browser.display.focus_ring_width = 0
в about: config для каждого браузера.
button::-moz-focus-inner {
border: 0;
}
Да, у меня тоже работает! Как это можно сделать для выборок?
Обратите внимание, что это также работает для ввода (например, input :: - moz-focus-inner {border: 0;})
да, мне это нужно для ввода. Я никогда раньше не видел двойного двоеточия, используемого в CSS. интересно.
Назначение двойного двоеточия: (нотация CSS3) evotech.net/blog/2007/05/…
+1 Огромное спасибо за этот CSS !! Я не мог понять, как это сделать ... Я использовал -moz-outline-style:, и он не работал, а текст на моей кнопке все еще выделялся. Но это полностью исправляет. Спасибо большое!!
Я тестирую это в реальном мире с помощью JAW. Я вернусь ко всем вам с любыми открытиями или взломами. Поверьте, их было много. Кто бы ни подумал, что было бы неплохо сделать интерфейс с доступными вкладками внутри модального окна ... ну ... нужно сказать больше.
Это не сработало для меня, потому что bootstrap.css делал эти уродливые кнопки с точками. Вместо поставил :focus {outline:none !important;}
: focus {outline: none;} :: - moz-focus-inner {border: 0;} будет менее конкретным
В Firefox 23.0.1 он работает только в сочетании с background: none. jsbin.com/UMuRAso/1/edit
Это не работает для area, для этого я использовал это: stackoverflow.com/a/12888335/2615737
у меня не работает с кнопочным селектором. Мне пришлось использовать [type = "button"], чтобы заставить его работать. Идк, почему.
@ 7wp, если бы вы использовали scss / less, это выглядело бы как button { ::-moz-focus-inner { border: 0; } }
@machineaddict, который решил эту проблему для меня, хотя я не использую bootstrap.css - спасибо!
Как этот стиль применяется встроенно?
Предлагаю добавить псевдокласс :-moz-focusring
в ответ на @ 7wp ВЫБОРЫ выполняются так: code select:-moz-focusring { color: transparent; text-shadow: 0 0 0 #000; }
Большое спасибо! это было действительно больно.
однако этот метод не рекомендуется использовать в производстве, как указано здесь
@JoshCrozier, есть ли другой способ сделать это? так как этот метод не рекомендуется для производства
Возможно, вы захотите усилить фокус, а не избавиться от него.
button::-moz-focus-inner {border: 2px solid transparent;}
button:focus::-moz-focus-inner {border-color: blue}
@Nathan немного опоздал, но отсутствие стиля в состоянии фокуса будет мешать работе с клавиатурой. вы не сможете узнать, что сфокусировано, когда вы нажмете клавишу вкладка.
@Hkan Да, согласен. Но контур Firefox уродлив, особенно когда он находится вокруг настраиваемой границы фокуса.
@Nathan Я полностью согласен с этим. Что мы должны сделать, так это предоставить собственный стиль для состояния фокуса, а не делать элементы одинаковыми в указанном состоянии.
Я думаю, вы действительно должны знать, что делаете, удаляя контур фокуса, потому что это может испортить навигацию с клавиатуры и доступность.
Если вам нужно убрать его из-за проблемы с дизайном, добавьте состояние :focus к кнопке, которое заменяет это каким-либо другим визуальным сигналом, например, изменением границы на более яркий цвет или что-то в этом роде.
Иногда я чувствую необходимость убрать этот раздражающий план, но всегда готовлю альтернативный визуальный сигнал.
А никогда использует функцию blur() js. Используйте псевдокласс ::-moz-focus-inner.
Если вы предпочитаете использовать CSS, чтобы избавиться от пунктирного контура:
/*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;
}
Вам не нужна единица для чисел, которые равны нулю. 0px можно заменить только на 0
button::-moz-focus-inner { border: 0; }
Где button может быть любым селектором CSS, для которого вы хотите отключить поведение.
Вы можете попробовать button::-moz-focus-inner {border: 0px solid transparent;} в своем CSS.
:focus, :active {
outline: 0;
border: 0;
}
Работал как шарм для поля выбора, которое я использовал
Это было недостаточно конкретно, и я не хотел использовать! Important или ориентироваться только на элементы a, поэтому я нашел хороший вариант - body :focus, body :active { outline: 0; border: 0; }::-moz-focus-inner { border: 0; }.
Нет необходимости определять селектор.
:focus {outline:none;}
::-moz-focus-inner {border:0;}
Однако это нарушает передовой опыт W3C по обеспечению доступности. Схема призвана помочь тем, кто пользуется клавиатурой.
https://www.w3.org/TR/WCAG20-TECHS/F78.html#F78-examples
Спасибо, у меня это сработало, когда правильный ответ - нет. Я, должно быть, использовал неправильный селектор.
Спасибо, это тоже удалит его со ссылок и кнопок?
Этот лучший! Принятый ответ только для <button>, но не для <a> или <input>.
Замечательный ответ, это относится ко всему, а не только к <button>, как сказала Бонди.
Приятно - это также помогает предотвратить появление пунктирной границы / контура для ячеек таблицы после того, как вы щелкнете что-либо в ней.
У меня работает только с :focus, не нужно было использовать ::-moz-focus-inner - кстати: я использовал его по ссылкам (<a>)
Идеально подходит для Mozilla Firefox 30 под Ubuntu (GNU / Linux).
Работает в FF 36.0.4 на Mac. Они станут новыми стандартными строками в моем сбросе css. Большое спасибо.
Довольно странно, что у меня была только эта проблема в FF Developper ... В любом случае спасибо!
Я поддержу заметку об этой нарушающей доступности. Важно помнить, что не каждый может пользоваться мышью или хорошо видеть или видеть. Тем не менее, по ссылке (и здравому смыслу) сокрытие контура ломается только тогда, когда это делается without ... an author-supplied visual focus indicator - другими словами, можно заменить стиль пользовательского агента своим собственным, как упоминал OP. В идеале он должен быть высококонтрастным.
Если у вас есть рамка на кнопке и вы хотите скрыть точечный контур в Firefox без, удалив границу (и, следовательно, ее дополнительную ширину на кнопке), вы можете использовать:
.button::-moz-focus-inner {
border-color: transparent;
}
Приведенное ниже сработало для меня в случае ССЫЛКИ, подумал о том, чтобы поделиться - если кому-то интересно.
a, a:visited, a:focus, a:active, a:hover{
outline:0 none !important;
}
Ваше здоровье!
Просто a { outline: none; } должно хватить для ссылок.
здесь! important помогло, в других решениях этого не было, и они не работали. для меня.
Но часто вам следует использовать a { outline: none; } с !important -> a { outline: none !important; }.
В Интернете можно найти множество решений для этого, многие из которых работают, но чтобы заставить это сделать, чтобы абсолютно ничто не могло выделить / сфокусироваться после использования следующего:
::-moz-focus-inner, :active, :focus {
outline:none;
border:0;
-moz-outline-style: none;
}
Это просто добавляет немного дополнительной безопасности и скрепляет сделку!
[Обновление] Это решение больше не работает. Решение, которое сработало для меня, - это https://stackoverflow.com/a/3844452/925560
Ответ, помеченный как правильный, не работал с Firefox 24.0.
Чтобы удалить точечный контур на кнопках и тегах привязки Firefox, я добавил следующий код:
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;
}
Я нашел решение здесь: http://aghoshb.com/articles/css-how-to-remove-firefoxs-dotted-outline-on-buttons-and-anchor-tags.html
Это больше не работает: / Решение, которое сработало, это stackoverflow.com/a/3844452/925560
Удалите пунктирный контур из ссылок, кнопки и элемента ввода.
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;
}
Это работает на firefox v-27.0
.buttonClassName:focus {
outline:none;
}
Пробовал здесь большинство ответов, но ни один из них не помог мне. Когда я понял, что мне нужно избавиться от синего контура на кнопках и в Chrome, я нашел другое решение. Удалить синюю рамку с кнопки пользовательского стиля css в Chrome
Этот код работал у меня в Firefox версии 30 в Windows 7. Возможно, он поможет кому-нибудь еще :)
button:focus {outline:0 !important;}
То же самое и здесь, это единственное решение, работающее на FF 38.0.5
Работал над Firefox 81 для Linux Mint.
В большинстве случаев без добавления !important в код CSS это не сработает.
!importanta, a:active, a:focus{
outline: none !important; /* Works in Firefox, Chrome, IE8 and above */
}
Или любой другой код:
button::-moz-focus-inner {
border: 0 !important;
}
Протестировано в Firefox 46 и Chrome 49 с использованием этого кода.
input:focus, textarea:focus, button:focus {
outline: none !important;
}
Перед (видны белые точки)
Если вы хотите применить только к нескольким полям ввода, кнопкам и т. д., Используйте более конкретный код.
input[type=text] {
outline: none !important;
}
Удачного кодирования !!
!important был нужен мне для переопределения таблицы стилей Firefox. Ваше здоровье!
После того, как я попробовал множество вариантов из вышеперечисленного, у меня сработало только следующее.
*:focus, *:visited, *:active, *:hover { outline:0 !important;}
*::-moz-focus-inner {border:0;}
На самом деле (по крайней мере, в Firefox 77) вам нужно только: button:focus { outline: none !important } Или, если вам, как я, не нравится! Important, это также работает для переопределения стиля Firefox: :root button:focus { outline: none }
Я использовал этот код вместе с Bootstrap 3. Второй набор правил просто отменить, что bootstrap делает для кнопок фокусировки / активных:
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;
}
ОБРАТИТЕ ВНИМАНИЕ, что ваш собственный файл css должен располагаться после файла Bootstrap css в вашем html-коде, чтобы переопределить его.
Приведенный ниже код CSS помогает удалить это:
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;
}
Просто добавьте этот CSS в поле выбора
select:-moz-focusring {
color: transparent;
text-shadow: 0 0 0 #000;
}
У меня это нормально работает.
Это получит контроль диапазона:
:focus {
outline:none;
}
::-moz-focus-inner {
border:0;
}
input[type=range]::-moz-focus-outer {
border: 0;
}
От: Удалить пунктирный контур из элемента ввода диапазона в Firefox
Отлично, работает в Firefox 72 и на Linux!
Да, не пропустите !важный
button::-moz-focus-inner {
border: 0 !important;
}
! important здесь не является частью ответа, и если вашему приложению он нужен, вам придется решить более серьезные проблемы, чем выделение вокруг кнопок. Всегда старайтесь избегать! Важно.
Похоже, что в Firefox 4 элементы больше не получают контур по умолчанию при нажатии, а только при получении фокуса клавиатуры.