html - 单击时转换按钮颜色
问题描述
我希望按钮的颜色在每次单击时都会发生变化。在下面的代码片段中,它从绿色变为蓝色。
问题是一旦按钮获得焦点,无论点击多少次,颜色都不会改变。要重新启用效果,我必须单击其他位置以使按钮失去焦点。
我认为button:active
每次单击按钮时该事件都会重置该过程,但似乎并非如此。
button {
background: red;
color: black;
height: 50px;
width: 100px;
}
button:active {
background: green;
}
button:focus {
background: blue;
transition: all 3s ease;
}
<button>Click Me</button>
解决方案
您也许应该查看伪类的顺序(:focus/:active)
:active 应该始终排在最后!
有一些关于 CSS-Pseudoclasses 及其正确使用和顺序的文章。
我从 W3schools ( https://www.w3schools.com/css/css_pseudo_classes.asp ) 拿了这个:
注意: a:hover 必须在 CSS 定义中的 a:link 和 a:visited 之后才能生效!a:active 必须在 CSS 定义中的 a:hover 之后才能生效!伪类名称不区分大小写。*
:focus 通常与 :hover 定位类似(因为 hover 仅适用于鼠标)
推荐阅读
- arrays - 在 Swift 中使用 int 变量访问字典中的值
- javascript - 如何在由 create-react-app 创建的应用程序中使用 jsx 文件(不运行“npm runeject”)?
- css - bootstrap 4 align text right 无法弄清楚
- scala - 是否可以为 MLeap Transformer 提供更多输入
- javascript - 如何在每个特定时间间隔后显示一次 div
- java - 请帮我理解 Flux.join 参数
- c++ - 遇到小于 n 的简单计数质数问题
- css - 无法让我的 React 应用程序填满屏幕
- c# - Inheritance 2 子类是否可以引用相同的属性?
- applescript - Applescript 获取所有未交付的 iMessage?