我在一个网页上工作,我想自定义样式的<按钮>标签。在CSS中,我说:border: none。现在它在safari中工作得很好,但在chrome中,当我点击其中一个按钮时,它会在它周围放上一个烦人的蓝色边框。我认为button:active {outline:none}或button:focus {outline:none}将工作,但两者都没有。什么好主意吗?

这是它在被点击之前的样子(以及我希望它在被点击之后的样子):

这就是我所说的边界:

这是我的CSS:

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

当前回答

Chrome和其他浏览器的修复

button:focus { outline: none !important; box-shadow: none !important; }

其他回答

直到所有现代浏览器都开始支持css-selector:focus-visible, 保存可访问性的最简单,可能也是最好的方法是将这个棘手的焦点仅留给鼠标用户,而留给键盘用户:

1.使用这个小的填充(大约10kb): https://github.com/WICG/focus-visible 2.在css中添加下一个代码:

.js-focus-visible :focus:not(.focus-visible) {
  outline: none;
}

浏览器对css4-selector:focus-visible的支持现在非常弱: https://caniuse.com/#search=focus-visible

简单写提纲:无;。不需要使用伪元素焦点

将其添加到CSS文件中。

*{
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0) !important;
}

删除大纲对于可访问性是非常糟糕的!理想情况下,焦点环只在用户想要使用键盘时才会显示。

用途:focus-visible。它目前是W3C提议的使用CSS样式化仅用于键盘的焦点,并在Firefox (caniuse)中得到支持。在其他主要浏览器支持它之前,您可以使用这个健壮的填充。

/* Remove outline for non-keyboard :focus */
*:focus:not(.focus-visible) {
  outline: none;
}

/* Optional: Customize .focus-visible */
.focus-visible {
  outline-color: lightgreen;
}

我还写了一篇更详细的文章,以防你需要更多信息。

我在bootstrap上也遇到了同样的问题。我用轮廓和盒影来解决

.btn:focus, .btn.focus {
    outline: none !important;
    box-shadow: 0 0 0 0 rgba(0, 123, 255, 0) !important; // or none
}