假设我有一个简单的元素:
<a href="#" id="btn" onclick="return false">Click</a>
现在,我可以通过:active
点击更改此元素的外观:
#btn:active {
background: red;
}
然而,我想要的是,在我点击它之后,该元素将保持红色大约一秒钟而不改变HTML(因此没有复选框黑客)或javascript。是否有一个可以滥用的聪明技巧?
答案 0 :(得分:33)
回答我自己的问题。通过滥用:not
伪类,我们可以在发生onclick后触发动画:
#btn:not(:active) {
/* now keep red background for 1s */
transition: background-color 1000ms step-end;
}
#btn:active {
background: red;
}
答案 1 :(得分:3)
您可以使用CSS3 animations
并触发:focus
&amp; :active
...
现在,只需按 TAB 键即可激活效果...
但是如果你需要用鼠标点击来激活它......并且在a tag
中你需要将焦点设置为对象,所以有些javascript
是必须的。 (在这种情况下内联)
如果您可以使用其他对象,请说input type="text"
,然后在执行focus
时自动设置click
,但在这种情况下,focus
操作是<a href="#" id="btn" onclick="this.focus();return false">Click</a>
由浏览器提供。
因此,所需的内联JS是:
#btn {
background: yellow;
}
#btn:focus, #btn:active {
-webkit-animation: btn-color 1s forwards linear;
-moz-animation: btn-color 1s forwards linear;
-ms-animation: btn-color 1s forwards linear;
-o-animation: btn-color 1s forwards linear;
animation: btn-color 1s forwards linear;
}
@-webkit-keyframes btn-color { 0% { background: red; } 99% { background: red; } 100% { background: yellow; } }
@-moz-keyframes btn-color { 0% { background: red; } 99% { background: red; } 100% { background: yellow; } }
@-ms-keyframes btn-color { 0% { background: red; } 99% { background: red; } 100% { background: yellow; } }
@-o-keyframes btn-color { 0% { background: red; } 99% { background: red; } 100% { background: yellow; } }
@keyframes btn-color { 0% { background: red; } 99% { background: red; } 100% { background: yellow; } }
{{1}}