乐闻世界logo
搜索文章和话题

如何在 chrome 中从 css 自定义样式的按钮中删除蓝色边框

9 个月前提问
5 个月前修改
浏览次数150

6个答案

1
2
3
4
5
6

当您在 Chrome 浏览器中点击按钮时,通常会看到一个蓝色的轮廓或边框出现,这被称为焦点轮廓(focus outline)。这是浏览器默认的可访问性特性,用以帮助用户知道哪个页面元素当前拥有键盘焦点。然而,从视觉设计的角度来看,有时这个默认效果可能与您的网站设计不协调。

要通过自定义 CSS 来移除按钮或其他可聚焦元素上的这个蓝色边框,您可以使用 outline 属性并将其设置为 none。但是,在去掉这个边框的同时,为了保持可访问性和良好的用户体验,您应该提供一个替代的焦点指示器。这可以通过改变背景色、边框颜色或使用其他视觉效果来实现。

以下是一个简单的例子,展示了如何移除按钮的默认焦点边框,并用另一个样式替代:

css
button:focus { outline: none; /* 移除默认的焦点轮廓 */ border: 2px solid #FFA500; /* 提供一个明显的焦点指示器,例如橙色边框 */ box-shadow: 0 0 5px #FFA500; /* 可选,添加额外的阴影效果作为焦点指示 */ }

在实现时,我们应当谨慎考虑是否真的需要移除这个焦点轮廓,因为这对于使用键盘导航的用户来说是一个重要的可用性特性。如果决定去除,我们必须确保通过其他方式明确指出元素的焦点状态,以维护网站的无障碍性。

例如,您可能会这样实现一个按钮:

html
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>自定义按钮样式</title> <style> button { padding: 10px 20px; background-color: #1E90FF; color: white; border: none; border-radius: 4px; cursor: pointer; } /* 当按钮被聚焦时,改变背景色和边框 */ button:focus { outline: none; border: 2px solid #FFA500; background-color: #187bcd; } </style> </head> <body> <button type="button">点击我</button> </body> </html>

在此例中,当按钮获得焦点时,除了移除默认的蓝色边框之外,按钮的背景色也会变暗,并且会增加一个橙色的边框,以此来区分焦点状态。这确保了即使在去除了默认的焦点轮廓后,用户依然能够通过颜色变化识别哪个元素是当前聚焦的,从而保持良好的用户体验和可访问性。

2024年6月29日 12:07 回复

不建议这样做,因为它会降低站点的可访问性;有关更多信息,请参阅这篇文章

也就是说,如果你坚持的话,这个 CSS 应该可以工作:

shell
button:focus {outline:0;}

检查一下或 JSFiddle:http://jsfiddle.net/u4pXu/

或者在这个片段中:

shell
button.launch { background-color: #F9A300; border: none; height: 40px; padding: 5px 15px; color: #ffffff; font-size: 16px; font-weight: 300; margin-top: 10px; margin-right: 10px; } button.launch:hover { cursor: pointer; background-color: #FABD44; } button.launch { background-color: #F9A300; border: none; height: 40px; padding: 5px 15px; color: #ffffff; font-size: 16px; font-weight: 300; margin-top: 10px; margin-right: 10px; } button.launch:hover { cursor: pointer; background-color: #FABD44; } button.change { background-color: #F88F00; border: none; height: 40px; padding: 5px 15px; color: #ffffff; font-size: 16px; font-weight: 300; margin-top: 10px; margin-right: 10px; } button.change:hover { cursor: pointer; background-color: #F89900; } button:active { outline: none; border: none; } button:focus {outline:0;} <button class="launch">Launch with these ads</button> <button class="change">Change</button>

运行代码片段隐藏结果

展开片段

2024年6月29日 12:07 回复

等待!如此丑陋的轮廓是有原因的!

在删除丑陋的蓝色轮廓之前,您可能需要考虑可访问性。默认情况下,蓝色轮廓放置在可聚焦元素上。这样,有辅助功能问题的用户就可以通过按 Tab 键来聚焦该按钮。一些用户不具备使用鼠标的运动技能,必须仅使用键盘(或某些其他输入设备)进行计算机交互。当您删除蓝色轮廓时,不再有视觉指示器指示聚焦的元素。如果要删除蓝色轮廓,则应_将_其替换为按钮已聚焦的另一种视觉指示。

可能的解决方案:聚焦时使按钮变暗

对于下面的示例,首先使用以下方法删除了 Chrome 的蓝色轮廓button:focus { outline:0 !important; }

以下是正常显示的基本 Bootstrap 按钮:

正常状态下的 Bootstrap 按钮

以下是获得焦点时的按钮:

处于聚焦状态的引导程序按钮

这里是按下按钮时的情况:

在此输入图像描述

正如您所看到的,按钮在获得焦点时会稍微变暗。就我个人而言,我建议将聚焦按钮设置得更暗,以便按钮的聚焦状态和正常状态之间存在非常明显的差异。

它不仅仅适用于残疾用户

让您的网站更易于访问是经常被忽视的事情,但可以帮助您在网站中创造更高效的体验。许多普通用户使用键盘命令来浏览网站,以便将双手放在键盘上。

2024年6月29日 12:07 回复

在我遇到这个问题的例子中,我必须指定box-shadow: none

shell
button:focus { outline:none; box-shadow: none; }
2024年6月29日 12:07 回复

我只是通过选择全部并将大纲:无应用于所有内容,从页面中的所有标签中删除大纲:)

shell
*:focus {outline:none}

正如 bagofcole 提到的,您可能还需要添加 !important,因此样式将如下所示:

shell
*:focus {outline:none !important}
2024年6月29日 12:07 回复

不要忘记!important声明,以获得更好的结果

shell
button:focus {outline:0 !important;}

具有 !important 属性的规则将始终被应用,无论该规则出现在 CSS 文档中的何处。

2024年6月29日 12:07 回复

你的答案