Як видалити пунктирний контур Firefox на Кнопках, а також посилання?


507

Я можу змусити Firefox не відображати некрасиві пунктирні контури фокусу на посиланнях із цим:

a:focus { 
    outline: none; 
}

Але як я можу це зробити і для <button>тегів? Коли я це роблю:

button:focus { 
    outline: none; 
}

кнопки все ще мають пунктирний фокус, коли натискаю на них.

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


2
Схоже, що у Firefox 4 елементи вже не отримують контур за замовчуванням при натисканні, а лише при отриманні фокусу на клавіатурі.
Geert

1
Те, що ви називаєте "потворним", призначене для підтримки доступності веб-сайту. Користувачі лише з клавіатури не можуть визначити, яка частина веб-сайту зосереджена під час видалення цього контуру. Ваш веб-сайт був би абсолютно недоступним, і цього ніколи не повинно бути. Ніколи не знімайте контури. Краще стилю його на свій лад.
Маркус Граф

Відповіді:


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

15
Так, це працює і для мене! Тепер, як це можна зробити для вибраних?
7wp

16
Зауважте, що це також працює для введення даних (наприклад, введення :: - moz-focus-Internal {border: 0;})
El Yobo,

15
Призначення подвійної ободової кишки: (CSS3 позначення) evotech.net/blog/2007/05/…
sholsinger

21
Цей не працював для мене, тому що bootstrap.css робив ці потворні пунктирні кнопки. Натомість я поставив:focus {outline:none !important;}
машинний вирок

5
: фокус {контур: немає;} :: - моз-фокус-внутрішній {межа: 0;} буде менш конкретним
Бен

311

Не потрібно визначати селектор.

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

Однак це порушує найкращі практики доступності W3C. Контур є для того, щоб допомогти тим, хто користується клавіатурою.

https://www.w3.org/TR/WCAG20-TECHS/F78.html#F78-приклади


8
Дякую, це спрацювало для мене, коли правильна відповідь не зробила. Я, мабуть, використовував неправильний селектор.
irl_irl

Дякую за це, чи це також видалить його на посиланнях і кнопках?
Натан

3
Цей найкращий! Прийнята відповідь лише для <button>, ні, <a>ні<input>
Рона ван дер Хайден

2
Ідеально підходить для Mozilla Firefox 30 під Ubuntu (GNU / Linux).
e-info128

4
Я другою запискою про цю порушувану доступність. Важливо пам’ятати, що не кожен може користуватися мишкою, або бачити, або добре бачити. Однак, за посиланням (і здоровим глуздом) приховування контуру розривається лише 11 років, коли це зроблено without ... an author-supplied visual focus indicator- іншими словами, непогано замінити стиль користувача-агента на власний, як згадувалося в ОП. В ідеалі він повинен бути висококонтрастним.
johncip

48

Якщо ви віддаєте перевагу використовувати 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
сленг

44

Нижче працював для мене у випадку ПОСИЛАННЯ, думав поділитися - на випадок, коли хтось зацікавиться.

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

Ура!


12
Просто посилання a { outline: none; }повинно бути достатньо.
грант

3
Тут важливо зробили трюк, інші рішення цього не мали і не спрацювали. для мене.
Кріштіану Фонтес

Але часто вам слід скористатися a { outline: none; }з !important->a { outline: none !important; }
joryl

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

Працював як шарм для вибраного ящика з опціями, який я використовував
Мухаммед Ахсан

1
Це було недостатньо конкретно, і я не хотів використовувати! Важливі або націлені лише aелементи, тому я знайшов хороший варіант бути body :focus, body :active { outline: 0; border: 0; } ::-moz-focus-inner { border: 0; }
Іван Дерст,

10

[Оновити] Це рішення більше не працює. Для мене це рішення - це 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


2
Він більше не працює: / Рішення, яке працювало, це це stackoverflow.com/a/3844452/925560
Ренато Карвальо

8

Тут спробувала більшість відповідей, але жодна з них не працювала на мене. Коли я зрозумів, що мені теж потрібно позбутися синього контуру на кнопках у Chrome, знайшов інше рішення. Видаліть синю облямівку із кнопки CSS, призначеної для користувача в Chrome

Цей код працював для мене у Firefox версії 30 в Windows 7. Можливо, він може допомогти комусь іншому :)

button:focus {outline:0 !important;}

Тут те саме, це єдине рішення, що працює над FF 38.0.5
OlivierH

6

Немає можливості видалити ці пунктирні фокуси у 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 і працює лише для окремих сайтів.
Рахіль Вазір

7
Питання задає питання, як це можна зробити за допомогою CSS, а у відповіді сказано, що цього не може бути. Це помилково. Це може бути.
Енді Мерсер

6

Для цього в Інтернеті знайдено багато рішень, багато з яких працюють, але змусити це зробити так, що абсолютно нічого не може виділити / зосередити один раз за допомогою використання наступного:

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

Це просто додає, що трохи додаткової безпеки та запечатує угоду!



5

Тестовано на Firefox 46 та Chrome 49 за допомогою цього коду.

input:focus, textarea:focus, button:focus {
    outline: none !important;
}

До цього (видно білі точки)

введення з білими крапками

Після (білі точки невидимі) введіть тут опис зображення

Якщо ви хочете застосувати лише декілька полів введення, кнопок тощо. Використовуйте більш конкретний код.

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

Щасливе кодування !!


!importantБуло необхідно для мене , щоб перевизначити таблицю стилів Firefox ,. Ура!
SamHH

5

Просто додайте цей css для поля вибору

select:-moz-focusring {
    color: transparent;
    text-shadow: 0 0 0 #000;
}

Це добре працює для мене.


4

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

Якщо вам потрібно вийняти його через проблему з дизайном, додайте :focus стан до кнопки, яка замінює це іншим візуальним сигналом, наприклад, зміною рамки на яскравіший колір чи щось подібне.

Іноді я відчуваю потребу викреслити цей набридливий контур, але завжди готую альтернативний зоровий фокус.

І ніколи не використовуйте функцію blur()js. Використовуйте ::-moz-focus-innerклас псевдо.


4

У більшості випадків без додавання !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;
}

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

Де buttonможе бути будь-який селектор CSS, для якого ви хочете відключити поведінку.


3

Можливо, ви хочете активізувати фокус, а не позбуватися від нього.

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

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

2
@Nathan трохи пізно, але, не маючи жодного стилю у фокусному стані, зіпсується з клавіатурним досвідом. ви не зможете дізнатися, на що фокусується, коли натискаєте клавішу вкладки .
Хкан

@Hkan Так, я згоден. Але контур Firefox некрасивий, особливо коли він знаходиться навколо власної межі фокусування.
Натан

@Nathan Я повністю з цим згоден. Що ми повинні зробити - це створити власний стиль для стану фокусування, а не зробити елементи однаковими для зазначеного стану.
Хкан

3

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

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;
}

3

Якщо у вас є рамка на кнопці і ви хочете приховати пунктирний контур у Firefox, не знімаючи рамку (а значить, це додаткова ширина на кнопці), ви можете використовувати:

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

3

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;
}

2

Схоже, єдиний спосіб досягти цього - це встановлення

browser.display.focus_ring_width = 0

приблизно в: налаштування на основі кожного браузера.



1

Перепробувавши багато варіантів із зазначеного, для мене спрацювало лише наступне.

*:focus, *:visited, *:active, *:hover  { outline:0 !important;}
*::-moz-focus-inner {border:0;}

Насправді (як мінімум у Firefox 77) вам потрібно лише: button:focus { outline: none !important } Або якщо ви мені подобаєтесь, мені не подобається! Важливо, це також допомагає переосмислити стилі Firefox: :root button:focus { outline: none }
Jonas Sandstedt

1

Разом з Bootstrap 3 я використовував цей код. Другий набір правил просто скасовує, що завантажувальна програма робить для фокусування / активних кнопок:

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 повинен з’являтися після файлу CSS Bootstrap у вашому html-коді, щоб його замінити.


1

Так не важливо!

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

! важливо не є частиною відповіді тут, і якщо вашому додатку це потрібно, то у вас виникнуть більші проблеми, ніж виділення навколо ваших кнопок. Завжди прагніть уникати! Важливого.
монокром

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.