锚链接(<a>)默认情况下,当它们变为“活动”或“聚焦”状态时,周围会出现虚线轮廓。在 Firefox 3 中,颜色由文本的颜色决定。我相信在早期版本和一些其他浏览器中,默认颜色是灰色。这是为了辅助功能而设置的默认样式。对于无法使用鼠标的用户,他们仍然需要一些视觉指示来表明他们当前有一个链接处于活动状态(例如,他们可以按 Enter 键导航到该链接)。

您可以自己尝试一下,点击一个链接,然后在松开鼠标之前将鼠标移开该链接。或者,打开“始终使用光标键在页面内导航”首选项,在页面中移动光标,然后查看链接是否会显示轮廓。


通常,此默认样式不是什么大问题。链接通常在加载新页面之前只处于活动状态几分之一秒,然后轮廓就会消失。但是,在某些情况下,您可能希望删除此轮廓。
请记住,此样式**实际上使用了“outline”CSS 属性**。Outline 与**“border“**属性非常相似,但有两个重要的区别。第一,outline 围绕整个对象(就像只使用“border”一样),但您可能无法指定具体哪一边。“Outline-left”不存在。第二,**outline 值不是盒子模型的一部分**。Border 会计算在盒子的总宽度中,而 outline 不会。这很重要,这样当应用和移除 outline 时,布局就不会发生偏移。
如何去除
如果您想将其去除,并且希望将其从每个锚链接中去除,只需将其作为 CSS 重置的一部分包含即可
a {
outline: 0;
}
总的来说,我建议保持默认的 outline 样式处于活动状态,但在某些情况下,它确实会让人感到很烦人,应该将其关闭。例如,如果您有一个页面元素使用了大量的填充(例如用于定位)或浮动,这些轮廓可能会被放置在非常奇怪的位置,甚至会延伸到屏幕的整个宽度。看起来很糟糕。另一种情况是,如果您将锚链接的“点击”事件用于其他目的(例如,激活一些 JavaScript 魔法)。该点击将不再加载新页面,因此轮廓将变为活动状态并保持该状态,直到您在其他地方单击,这比您通常在点击链接时看到的快速且临时的视图更难看。
确保添加新的焦点样式
由于该轮廓提供了重要的辅助功能,因此您确实应该(非常)考虑为链接的焦点和活动状态添加回样式。就我个人而言,我只是想让它们与悬停状态相同。就实际功能而言,它们几乎是一样的。无论您的悬停状态是什么,即使它是在切换背景图像或更改大小或其他任何操作,它都可以与活动状态和焦点状态结合使用。如下所示
a:hover, a:active, a:focus {
/* styling for any way a link is about to be used */
}
哇。我真的很想让这篇文章只有 3 句话长和 1 段代码。事情永远不像我想象的那样简单!
Flash
如果您在 Flash 对象/嵌入对象上遇到此虚线问题,您可以
object, embed {
outline: 0;
}
Firefox 输入框
点击input type=image
可能会产生虚线轮廓(在 Firefox 3.6.8 中出现,但在 Firefox 4 中不出现)。要删除它
input::-moz-focus-inner {
border: 0;
}
IE 9
George Langley 写信说,IE 9 似乎不允许您删除链接周围的虚线轮廓,除非您包含此元标记
<meta http-equiv="X-UA-Compatible" content="IE=9" />
不错,非常简单但有帮助的教程。我从来没有真正发现这一行很烦人,但我想这很方便,可以在我接下来的几个项目中实现。
干得好,伙计。
非常感谢,这个东西真的很烦人,能够禁用它真是太棒了。
继续努力!
什么,没有 jQuery?;)
特别是当您使用 -9999px 文本缩进时,这些边框看起来很糟糕!!
这真是一个让人拍脑门的时刻。它总是让我在标题图像中感到烦恼,因为它“显示”了页面的构建过程。
有帮助的帖子。尽管它们现在不太常见了,但虚线会显示图像地图或任何具有热点图像的可点击区域。这通常会破坏此类事物的视觉效果和感觉。
虽然我不喜欢这些轮廓,但我发现它们非常有用。
当您使用键盘导航时,这些轮廓会显示您的光标位置!
我认为这也存在一些可访问性问题……因此,如果您要删除它们,请有意识地进行操作。
没错!我有点喜欢这些轮廓。它们有助于导航。
但了解如何删除它们也很不错。
这非常有帮助。我不知道如何删除它们,而且知道在适当的时候可以删除它们非常棒。我认为您使用翻转状态的提示是一个完全可以接受的替代方案。
谢谢!
很棒的信息。我将把本教程添加到我关于outline 标签的文章中。谢谢!
很遗憾,此属性仅受 Mac 浏览器支持。Windows 用户只能从 onclick 事件中的 this.blur(); 调用中获益。
从我在 Twitter 上使用 BeTwittered 的信息流中看到了这篇文章。
了解如何删除轮廓很棒,但它也是一个用于排查紧凑布局的绝佳属性,因为它不占用空间。
作者不止一次提到(并且显然意识到了)轮廓作为辅助功能的重要性,但当我在这里阅读评论时,我不确定此信息是否真正传达给了每个人
一般来说,**删除轮廓是一件坏事!不要这样做!** 我知道了解如何删除它们可能很有趣,并且在极少数情况下甚至很有帮助,但如果随意使用,此技巧将使您的网站无法访问潜在用户。
如果您的办公室在七楼,您也不会关闭电梯,仅仅因为它看起来不好或不适合您办公室的风格,对吧?因为坐在轮椅上、拄着拐杖或其他难以爬七层楼的人就无法拜访您了。
因此,如果您真的想删除像链接周围的轮廓这样重要的辅助功能,请仔细考虑。
——trice
@trice22:例如
#header a img, #menu a img{outline:none;}
不那么极端,但仍然将其从可能破坏外观的地方删除。
我希望这能起作用——但图像在获得焦点/点击时仍然会显示虚线轮廓。
有谁知道如何仅将其应用于图像链接?
我以为这可以做到
a:focus img {outline: none;}
但没有运气。
谢谢,
dustin
我认为使用额外的焦点标签是一个特别方便的技巧,我想我会回到一些网站并添加这个小功能!
另一篇很棒的文章,克里斯!我最近讨论过这个相同的问题,此前我观察到一些原本设计精美的网站由于浮动div和各种图像替换技术而导致链接轮廓过大。去除不需要的链接轮廓涉及到一些微妙之处,尤其是在针对特定元素和处理不同浏览器时。我同意,一般来说,链接轮廓对于可用性很重要,但是,总有一些情况,有效的轮廓去除技术被证明是有益的。干杯!
谢谢!我一直认为该声明是浏览器特定的css技巧(并且无效)。
这完全是我过去试图理解的事情。很棒的技巧。谢谢
很棒的技巧,谢谢。
只是很可惜我需要回到我曾经构建的每个网站上实施它,哈哈
无论如何谢谢!
所以这就是你如何去除那个难看的虚线边框,谢谢!
我相信 Eric Meyer 建议不要移除这些轮廓,因为它们是 UI 的一部分,可以帮助用户知道他们点击了哪里。它们有时很烦人,但它们确实可以帮助你找到你所在的位置或上次点击的位置。
如果你需要在任何 AJAX 内容上去除它们,最好的方法是使用 blur() 比如 JavaScript。
将其保留为零会更好吗?
Outline:0
为了不失去可用性
您好,感谢您博客的信息
今天读到的最好的东西!现在我的网站看起来干净多了,我将其添加到我的 CSS 重置中。
这太棒了!这让我抓狂了!正是这样的东西真正赋予网页设计额外的触感。谢谢!
对于定位背景和 text-indent: -9999px; 的绝佳解决方案。
嗯..对我来说不起作用!
我在 Dreamweaver 中执行的每个图像翻转在 Firefox(Mac)中使用后都有此轮廓。查看一下
http://www.rainborecords.com
点击顶部中心的唱片图片,然后将鼠标移开并点击“后退”按钮。在 Firefox 中,图像带有轮廓并且保持“开启”状态(因为我认为从未有过“mouseout”命令)。在 Safari 中,情况相同,但没有轮廓。在 PC、IE 中,这两个问题都没有。
有什么办法解决吗?outline=0 没有任何区别。
谢谢,
Jim
没关系!我错了!它确实有效……
非常有帮助!谢谢!
哦,我的天哪。我一直想知道如何做到这一点。我不敢相信有如此简单的解决方法。
感谢您的提示!
我发现当使用 text-indent 时,使用“overflow:hidden”是 Firefox 的更好的解决方法。
这样,您仍然可以获得轮廓,这对于非鼠标用户来说是必要的,但现在 Firefox 不会让轮廓框延伸到页面上,而是固定到链接的大小。
在我看来,这更好,而且同样简单。
这似乎对 IE6 不起作用。
它对 Flash 对象如何工作?
我有一个对象(Flash 加载的 Carousel),我必须点击它才能看到图片。每次这个该死的虚线轮廓都会出现!有人可以给我隐藏它的代码吗?
outline: none; 不起作用
我也想知道它对 Flash 对象如何工作……
这是一个不错的,它允许您在 Firefox 等浏览器中覆盖此行为
谢谢!
这很简单!没想到。
添加此内容以去除所有链接状态下的虚线。
a, a:active, a:focus {
outline: none;
}
+1
太棒了,它帮了我很大的忙