Как удалить точечный контур Firefox на КНОПКАХ, а также на ссылках?

Я могу заставить Firefox не отображать уродливые пунктирные контуры фокуса на ссылки следующим образом:

a:focus { 
    outline: none; 
}

Но как я могу сделать это и для тегов <button>? Когда я это сделаю:

button:focus { 
    outline: none; 
}

когда я нажимаю на кнопки, они все еще имеют точечный контур фокуса.

(и да, я знаю, что это проблема удобства использования, но я хотел бы предоставить свои собственные подсказки, которые подходят для дизайна, а не уродливые серые точки)

Похоже, что в Firefox 4 элементы больше не получают контур по умолчанию при нажатии, а только при получении фокуса клавиатуры.

Geert 25.04.2011 11:56

То, что вы называете «уродливым», предназначено для поддержки доступности веб-сайта. Пользователи, работающие только с клавиатурой, больше не могут определять, какая часть веб-сайта находится в фокусе при удалении этого контура. Ваш веб-сайт будет полностью недоступен, и этого не должно быть. Никогда не удаляйте контур. Лучше оформляйте это по-своему.

Markus Graf 13.03.2019 16:19
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
518
2
311 686
25
Перейти к ответу Данный вопрос помечен как решенный

Ответы 25

Невозможно удалить этот пунктирный фокус в Firefox с помощью CSS.

Если у вас есть доступ к компьютерам, на которых работает ваше веб-приложение, перейдите к about: config в Firefox и установите browser.display.focus_ring_width на 0. Тогда Firefox вообще не будет показывать пунктирные границы.

Следующая ошибка объясняет тему: https://bugzilla.mozilla.org/show_bug.cgi?id=74225

Спасибо, он работает нормально, но я создал так много ссылок, что до сих пор не сталкивался с этой проблемой. но теперь я в замешательстве, так какова причина предыдущего представления?

Durga Rao 16.11.2013 15:42

Этот ответ теперь полностью ложен. Установка ::-moz-focus-inner {border:0;}, как упоминалось в нескольких других ответах, отлично работает.

Andy Mercer 12.09.2014 18:39

@AndyM Этот ответ действительно работает. Решение, представленное в других ответах, предназначено для CSS и работает только для отдельных сайтов.

Rahil Wazir 13.10.2014 16:01

Вопрос спрашивает, как это можно сделать с помощью CSS, а ответ говорит, что этого не может быть. Это неправда. Может быть.

Andy Mercer 13.10.2014 16:07

Похоже, что единственный способ добиться этого - установить

browser.display.focus_ring_width = 0

в about: config для каждого браузера.

Ответ принят как подходящий

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

Да, у меня тоже работает! Как это можно сделать для выборок?

7wp 03.02.2010 22:54

Обратите внимание, что это также работает для ввода (например, input :: - moz-focus-inner {border: 0;})

El Yobo 31.05.2010 11:03

да, мне это нужно для ввода. Я никогда раньше не видел двойного двоеточия, используемого в CSS. интересно.

pylonicon 17.08.2010 13:44

Назначение двойного двоеточия: (нотация CSS3) evotech.net/blog/2007/05/…

sholsinger 03.11.2010 22:09

+1 Огромное спасибо за этот CSS !! Я не мог понять, как это сделать ... Я использовал -moz-outline-style:, и он не работал, а текст на моей кнопке все еще выделялся. Но это полностью исправляет. Спасибо большое!!

Nathan 07.09.2011 03:26

Я тестирую это в реальном мире с помощью JAW. Я вернусь ко всем вам с любыми открытиями или взломами. Поверьте, их было много. Кто бы ни подумал, что было бы неплохо сделать интерфейс с доступными вкладками внутри модального окна ... ну ... нужно сказать больше.

John Drefahl 01.11.2011 23:52

Это не сработало для меня, потому что bootstrap.css делал эти уродливые кнопки с точками. Вместо поставил :focus {outline:none !important;}

machineaddict 02.05.2013 15:18

: focus {outline: none;} :: - moz-focus-inner {border: 0;} будет менее конкретным

Ben 13.06.2013 16:17

В Firefox 23.0.1 он работает только в сочетании с background: none. jsbin.com/UMuRAso/1/edit

NVI 20.09.2013 23:36

Это не работает для area, для этого я использовал это: stackoverflow.com/a/12888335/2615737

Francisco Corrales Morales 16.04.2014 19:14

у меня не работает с кнопочным селектором. Мне пришлось использовать [type = "button"], чтобы заставить его работать. Идк, почему.

Xitcod13 20.04.2014 03:59

@ 7wp, если бы вы использовали scss / less, это выглядело бы как button { ::-moz-focus-inner { border: 0; } }

Gherman 07.05.2014 14:29

@machineaddict, который решил эту проблему для меня, хотя я не использую bootstrap.css - спасибо!

user1380540 22.01.2015 19:37

Как этот стиль применяется встроенно?

Frederik Krautwald 23.05.2015 02:41

Предлагаю добавить псевдокласс :-moz-focusring

Mateng 30.08.2017 14:02

в ответ на @ 7wp ВЫБОРЫ выполняются так: code select:-moz-focusring { color: transparent; text-shadow: 0 0 0 #000; }

stan 17.10.2017 17:58

Большое спасибо! это было действительно больно.

Sarotobi 26.03.2019 08:32

однако этот метод не рекомендуется использовать в производстве, как указано здесь

Coder 14.03.2020 19:56

@JoshCrozier, есть ли другой способ сделать это? так как этот метод не рекомендуется для производства

Coder 17.03.2020 10:17

Возможно, вы захотите усилить фокус, а не избавиться от него.

button::-moz-focus-inner {border: 2px solid transparent;}

button:focus::-moz-focus-inner {border-color: blue} 

@Nathan немного опоздал, но отсутствие стиля в состоянии фокуса будет мешать работе с клавиатурой. вы не сможете узнать, что сфокусировано, когда вы нажмете клавишу вкладка.

Hkan 06.11.2015 13:21

@Hkan Да, согласен. Но контур Firefox уродлив, особенно когда он находится вокруг настраиваемой границы фокуса.

Nathan 06.11.2015 20:00

@Nathan Я полностью согласен с этим. Что мы должны сделать, так это предоставить собственный стиль для состояния фокуса, а не делать элементы одинаковыми в указанном состоянии.

Hkan 06.11.2015 20:27

Я думаю, вы действительно должны знать, что делаете, удаляя контур фокуса, потому что это может испортить навигацию с клавиатуры и доступность.

Если вам нужно убрать его из-за проблемы с дизайном, добавьте состояние :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

slang 04.12.2018 23:34

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

Где button может быть любым селектором CSS, для которого вы хотите отключить поведение.

Вы можете попробовать button::-moz-focus-inner {border: 0px solid transparent;} в своем CSS.

:focus, :active {
    outline: 0;
    border: 0;
}

Работал как шарм для поля выбора, которое я использовал

Muhammad Ahsan 01.05.2013 14:55

Это было недостаточно конкретно, и я не хотел использовать! Important или ориентироваться только на элементы a, поэтому я нашел хороший вариант - body :focus, body :active { outline: 0; border: 0; }::-moz-focus-inner { border: 0; }.

Ivan Durst 28.03.2014 22:53

Нет необходимости определять селектор.

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

Однако это нарушает передовой опыт W3C по обеспечению доступности. Схема призвана помочь тем, кто пользуется клавиатурой.

https://www.w3.org/TR/WCAG20-TECHS/F78.html#F78-examples

Спасибо, у меня это сработало, когда правильный ответ - нет. Я, должно быть, использовал неправильный селектор.

irl_irl 08.10.2010 22:27

Спасибо, это тоже удалит его со ссылок и кнопок?

Nathan 07.09.2011 03:28

Этот лучший! Принятый ответ только для <button>, но не для <a> или <input>.

Ron van der Heijden 12.02.2013 15:16

Замечательный ответ, это относится ко всему, а не только к <button>, как сказала Бонди.

eclipsis 23.11.2013 05:57

Приятно - это также помогает предотвратить появление пунктирной границы / контура для ячеек таблицы после того, как вы щелкнете что-либо в ней.

John - Not A Number 14.03.2014 21:54

У меня работает только с :focus, не нужно было использовать ::-moz-focus-inner - кстати: я использовал его по ссылкам (<a>)

Xavi Montero 11.05.2014 05:58

Идеально подходит для Mozilla Firefox 30 под Ubuntu (GNU / Linux).

e-info128 02.07.2014 02:54

Работает в FF 36.0.4 на Mac. Они станут новыми стандартными строками в моем сбросе css. Большое спасибо.

Herr_Hansen 09.06.2015 02:39

Довольно странно, что у меня была только эта проблема в FF Developper ... В любом случае спасибо!

Marcky 18.10.2015 21:31

Я поддержу заметку об этой нарушающей доступности. Важно помнить, что не каждый может пользоваться мышью или хорошо видеть или видеть. Тем не менее, по ссылке (и здравому смыслу) сокрытие контура ломается только тогда, когда это делается without ... an author-supplied visual focus indicator - другими словами, можно заменить стиль пользовательского агента своим собственным, как упоминал OP. В идеале он должен быть высококонтрастным.

johncip 14.02.2019 11:43

Если у вас есть рамка на кнопке и вы хотите скрыть точечный контур в Firefox без, удалив границу (и, следовательно, ее дополнительную ширину на кнопке), вы можете использовать:

.button::-moz-focus-inner {
    border-color: transparent;
}

Приведенное ниже сработало для меня в случае ССЫЛКИ, подумал о том, чтобы поделиться - если кому-то интересно.

a, a:visited, a:focus, a:active, a:hover{
    outline:0 none !important;
}

Ваше здоровье!

Просто a { outline: none; } должно хватить для ссылок.

grant 24.01.2012 03:18

здесь! important помогло, в других решениях этого не было, и они не работали. для меня.

Cristiano Fontes 19.03.2012 07:54

Но часто вам следует использовать a { outline: none; } с !important -> a { outline: none !important; }.

joryl 23.11.2016 12:13

В Интернете можно найти множество решений для этого, многие из которых работают, но чтобы заставить это сделать, чтобы абсолютно ничто не могло выделить / сфокусироваться после использования следующего:

::-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

Renato Carvalho 18.12.2013 01:10

Удалите пунктирный контур из ссылок, кнопки и элемента ввода.

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

OlivierH 21.06.2015 20:12

Работал над Firefox 81 для Linux Mint.

Sr. Schneider 02.10.2020 20:24

В большинстве случаев без добавления !important в код CSS это не сработает.

Итак, не забудьте добавить !important

a, 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 with white dots

После (белые точки не видны)

Если вы хотите применить только к нескольким полям ввода, кнопкам и т. д., Используйте более конкретный код.

input[type=text] {
  outline: none !important;
}

Удачного кодирования !!

!important был нужен мне для переопределения таблицы стилей Firefox. Ваше здоровье!

Sam A. Horvath-Hunt 18.04.2018 14:31

После того, как я попробовал множество вариантов из вышеперечисленного, у меня сработало только следующее.

*: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 }

Jonas Sandstedt 07.05.2020 17:06

Я использовал этот код вместе с 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!

asdjfiasd 02.02.2020 12:37

Да, не пропустите !важный

button::-moz-focus-inner {
 border: 0 !important;
}

! important здесь не является частью ответа, и если вашему приложению он нужен, вам придется решить более серьезные проблемы, чем выделение вокруг кнопок. Всегда старайтесь избегать! Важно.

monokrome 17.07.2019 05:24

Другие вопросы по теме