如何删除Firefox在按钮和链接上的虚线轮廓?


507

我可以使Firefox在此链接上不显示点状的难看的焦点轮廓:

a:focus { 
    outline: none; 
}

但是,我也该如何对<button>标签执行此操作?当我这样做时:

button:focus { 
    outline: none; 
}

单击这些按钮时,它们的焦点轮廓仍为虚线。

(是的,我知道这是一个可用性问题,但是我想提供适合于设计的我自己的焦点提示,而不是难看的灰色点)


2
在Firefox 4中,默认情况下,元素在单击时不再具有轮廓,而仅在获得键盘焦点时才具有轮廓。
Geert

1
您所说的“丑陋”旨在支持网站的可访问性。仅使用键盘的用户在删除此大纲时不再能确定网站的焦点。您的网站将完全无法访问,情况永远不会如此。切勿删除轮廓。以您的方式更好地设置样式。
Markus Graf

Answers:


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

15
是的,它也对我有用!现在如何为选择完成呢?
7wp 2010年

16
请注意,这也适用于输入(例如input ::-moz-focus-inner {border:0;})
El Yobo,2010年

14
双冒号的目的:(CSS3符号)evotech.net/blog/2007/05/...
sholsinger

21
这对我不起作用,因为bootstrap.css制作了这个难看的虚线按钮。相反,我把:focus {outline:none !important;}
machineaddict

5
:焦点{轮廓:无;} :: - MOZ-聚焦内{边界:0;}将不太具体

310

无需定义选择器。

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

但是,这违反了W3C的可访问性最佳做法。该大纲可帮助那些使用键盘导航的人。

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


8
谢谢,如果没有正确的答案,这对我有用。我一定使用了错误的选择器。
irl_irl 2010年

感谢您这样做,是否也可以将其删除在链接和按钮上?
内森

3
这是最好的!接受的答案仅适用于<button><a><input>
罗恩·范德·海登

2
非常适合在Ubuntu(GNU / Linux)下的Mozilla Firefox 30中使用。
e-info128

4
我将对有关这种中断的辅助功能的注释进行第二次注释。重要的是要记住,并非每个人都可以使用鼠标,看得见或看得见。也就是说,按照链接(和常识)隐藏大纲仅会在完成后中断without ... an author-supplied visual focus indicator-换句话说,可以用自己的样式替换用户代理样式,就像OP提到的那样。理想情况下,它应该是高对比度的。
johncip '19

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
slang

43

以下是在我想使用LINKS(共享)的情况下为我工作的方式(如果有人感兴趣)。

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

干杯!


12
只需a { outline: none; }足够的链接即可。
授予

3
这里!important起到了作用,其他解决方案则没有,也没有用。为了我。
Cristiano Fontes 2012年

但往往你应该使用a { outline: none; }带有!important> -a { outline: none !important; }
joryl

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

就像我使用的一个选择框的魅力一样工作
Muhammad Ahsan

1
这还不够具体,我不想使用!important或仅定位a元素,因此我找到了一个不错的选择 body :focus, body :active { outline: 0; border: 0; } ::-moz-focus-inner { border: 0; }
Ivan Durst 2014年

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
Renato Carvalho 2013年

8

在这里尝试了大多数答案,但是没有一个对我有用。当我意识到也必须摆脱Chrome上按钮的蓝色轮廓时,我找到了另一种解决方案。从Chrome中的CSS自定义样式按钮中删除蓝色边框

这段代码在Windows 7的Firefox版本30上对我有用。也许它可以帮助其他人:)

button:focus {outline:0 !important;}

同样的事情,这是针对FF 38.0.5的唯一解决方案
OlivierH 2015年

6

使用CSS在Firefox中无法消除这些点状的焦点。

如果您有权访问Web应用程序所在的计算机,请转至Firefox中的about:config并将其设置browser.display.focus_ring_width为0。然后Firefox根本不会显示任何虚线边框。

以下错误说明了该主题:https : //bugzilla.mozilla.org/show_bug.cgi?id=74225


谢谢,它工作正常,但是以前我创建了很多链接,直到现在我再也没有遇到过这个问题。但是现在我很困惑,那么以前提出的原因是什么?
杜尔加饶

现在答案是完全错误的。设置::-moz-focus-inner {border:0;}其他几个答案中提到的效果很好。
Andy Mercer 2014年

@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 '18


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迟了一点,但是,在焦点状态下没有任何样式会干扰键盘体验。当您按下Tab键时,您将无法知道焦点所在。
Hkan 2015年

@Hkan是的,我同意。但是Firefox的轮廓很难看,特别是当它围绕自定义焦点边界时。
内森2015年

@Nathan我完全同意。我们应该做的是为焦点状态提供自己的样式,而不是使元素在所述状态下相同。
Hkan

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

在about:config中基于每个浏览器。


1

这适用于Firefox v-27.0

 .buttonClassName:focus {
  outline:none;
}

1

在尝试了上述多种选择之后,以下仅对我有用。

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

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文件应位于html代码中的Bootstrap css文件之后,以覆盖它。


1

是的,不要错过!重要

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

重要不是这里的答案,如果您的应用需要它,那么与按钮周围的亮点相比,您要解决的问题要大得多。始终努力避免!重要。
monokrome

0

您可以尝试button::-moz-focus-inner {border: 0px solid transparent;}使用CSS。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.