У меня есть куча длительных анимаций CSS на странице. Я хочу приостановить их, когда пользователь переключится на другую вкладку и возобновит их, когда пользователь снова вернется к исходной вкладке. Для простоты я не нацелен на кросс-браузерное решение на данный момент; для его работы в Chrome должно быть достаточно.
document.addEventListener("visibilitychange", function() {
if (document.hidden) {
document.querySelector("#test").classList.add("paused");
} else {
document.querySelector("#test").classList.remove("paused");
}
});
div#test {
width: 50px;
height: 50px;
background-color: red;
position: absolute;
left: 10vw;
animation-name: move;
animation-duration: 5s;
animation-fill-mode: forwards;
animation-timing-function: linear;
}
@keyframes move {
to {
left: 90vw
}
}
.paused {
animation-play-state: paused !important;
-webkit-animation-play-state: paused !important;
-moz-animation-play-state: paused !important;
}
<div id="test"></div>