【发布时间】:2016-05-24 21:36:05
【问题描述】:
为什么有些按钮在点击时会应用 :focus 样式而有些则不会?例如,angular-ui modal 关闭按钮已应用,但尝试 W3Schools button element 并没有。
编辑:我重新提出这个问题。对不起,我忘记了一点,因为我真的坚持它已经解决了,直到昨天我才真正尝试过。所以我做了这样的事情:.btn:focus:not(:active) { outline: none;},但问题是使用tab 按钮时它也没有显示焦点。完全忘记引导程序,不是它!
当:focus 的background-color 属性与默认值不同时,焦点效果似乎在按钮单击时变得可见。可能对其他一些属性也是如此。
所以 - 如果 background 是默认值,那么只有在使用 tab 键或手动将其设置为 :focus 时才能看到焦点效果。如果background 不同,点击后也能看到效果。 Plunker 演示了这一点:https://plnkr.co/edit/2eKrtwl2wZcj3Ty4JJSu?p=preview
也许我自己已经回答了我的问题,也许没有,不知道。
edit2:刚刚看到@musically_ut 编辑给出了几乎相同的示例。
更新
在与@Error404 讨论后,我可以更准确地澄清这个问题。
所以问题是 - 为什么默认 button 的 outline 样式在被点击时没有显示?
以粗体显示“点击”,因为它不仅仅在点击时起作用。使用键盘tab 键聚焦时有效,使用开发者工具手动设置时有效。
到目前为止,大多数答案都认为单击时它会失去焦点或根本没有焦点,但确实如此。您可以更改button 的background 或border 以及可能还有其他一些属性,突然,当您单击它时,您会看到轮廓。或者您可以将outline 本身更改为:focus 规则中的其他内容,它也会显示。
【问题讨论】:
-
新问题到底是什么?
-
@Error404 问题还是一样的 - “为什么有些按钮在点击它们时会应用 :focus 样式而有些却没有?”我很难相信这真的是因为背景。
-
但是我仍然不确定您所指的内容。
:focus只是一个检测到您已单击按钮的事件,与CSS上的更改无关。CSS使您可以在触发此事件时添加一些功能。当然,如果你想在点击按钮时看到一些变化,你必须在CSS上添加一些变化(才能看到效果)。不介意是背景、边框等。看这个example使用边框。 -
但是,无论按钮的某些默认样式属性是否已更改,都会有所不同。我提到了
background,现在我看到border也适用。你看 - 你只添加了border的规则,但同时你也可以看到应用了默认的outline样式。如果您删除border规则,那么outline也会消失。 -
但是如果不设置任何属性也会出现大纲。看到这个example,让我知道它是否是你所指的。
标签: html css angularjs angular-ui bootstrap-modal