I must admit that your question is complicated!
My suggested solution:
button {
width: 100px;
height: 50px;
color: white;
background-color: green;
transition: background-color 2s;
}
button:hover {
background-color: blue;
}
button:active {
-webkit-animation: activate 0s 0s forwards;
animation: activate 0s 0s forwards;
}
@-webkit-keyframes activate {
0% {background-color: green;}
100% {background-color: red;}
}
@keyframes activate {
0% {background-color: green;}
100% {background-color: red;}
}
fiddle
, - activer, , , .
, , , : -)