I have created a class with an animation (changes the shape) for a button that will be triggered by a click. After the shapeshift, I wanted to have a hover effect which only changes the color. Each one works fine separately: .playBtn:hover
and .pauseBtn:hover
.
However, when I add both of them, it seems the animations disable the hover effects (the hover effect won't apply!). Does anyone have an idea why this happens?
Here is my code (main subject is CSS, but HTML and JS are also added just in case):
var bgMusic = document.getElementById("bgMusic"),
musicBtn = document.getElementById("musicBtn"),
music = false;
function toggleMusic() {
if (music) {
bgMusic.pause()
} else {
bgMusic.play();
}
};
bgMusic.onplaying = function() {
musicBtn.classList.remove("playBtn");
musicBtn.classList.add("pauseBtn");
music = true;
};
bgMusic.onpause = function() {
musicBtn.classList.remove("pauseBtn");
musicBtn.classList.add("playBtn");
music = false;
};
#musicBtn {
width: 0;
height: 0;
border-left: 16px solid grey;
border-top: 8px solid transparent;
border-bottom: 8px solid transparent;
margin-top: 3.5px;
-webkit-transition-property: all;
-moz-transition-property: all;
-ms-transition-property: all;
-o-transition-property: all;
transition-property: all;
-webkit-transition-duration: .4s;
-moz-transition-duration: .4s;
-ms-transition-duration: .4s;
-o-transition-duration: .4s;
transition-duration: .4s;
}
#musicBtn:hover {border-left: white 16px solid;}
.playBtn {animation: play-btn .6s ease forwards;}
@keyframes play-btn {
from {
transform: rotateZ(0);
width: 5px;
height: 15px;
border-left: 5px solid white;
border-top: 0 solid transparent;
border-right: 5px solid white;
border-bottom: 0 solid transparent;
} to {
transform: rotateZ(-360deg);
width: 0;
height: 0;
border-left: 16px solid grey;
border-top: 8px solid transparent;
border-right: 0 solid transparent;
border-bottom: 8px solid transparent;
}
}
.playBtn:hover {border-left: 16px solid white;} /*IT WON'T TAKE EFFECT!*/
.pauseBtn {animation: pause-btn .6s ease forwards;}
@keyframes pause-btn {
from {
transform: rotateZ(0deg);
width: 0;
height: 0;
border-left: 16px solid grey;
border-top: 8px solid transparent;
border-right: 0 solid transparent;
border-bottom: 8px solid transparent;
} to {
transform: rotateZ(360deg);
width: 5px;
height: 15px;
border-left: 5px solid white;
border-top: 0 solid transparent;
border-right: 5px solid white;
border-bottom: 0 solid transparent;
}
}
.pauseBtn:hover {border-left: 5px solid grey; border-right: 5px solid grey;} /*IT WON'T TAKE EFFECT!*/
<audio id="bgMusic" src="some music ...."></audio>
<div><div id="musicBtn" onclick="toggleMusic();"></div></div>