Остановить вращение анимации на CSS
Мне нравится знать, как я могу плавно остановить анимацию вращения (css) в произвольном положении без нажатия кнопки.
span.glyphicon-arrow-up {
position: absolute;
top: 31%;
left: 36%;
margin:-60px 0 0 -60px;
-webkit-animation:spin 2s linear infinite;
-moz-animation:spin 2s linear infinite;
animation-iteration-count: 2;
animation:spin 2s linear infinite;
font-size: 14.0em;
@-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }
@-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
@keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } }
Я надеюсь, что вы, ребята, можете мне помочь. (я не знаю что-то о JavaScript)
1 ответ
Сначала создайте второй класс CSS, чтобы применить анимацию. Тогда используйте getComputedStyle
рассчитать и установить вращение элемента и удалить класс анимации при запуске события. Как вы запускаете событие, зависит от вас; ради скорости и простоты, я просто использовалclick
событие, но вы можете установить тайм-аут со случайно сгенерированной задержкой, чтобы запустить его без какого-либо взаимодействия с пользователем. Я также включил запасной вариант для браузеров, которые не поддерживаютtransform
свойство, которое просто устанавливает его initial
,
document.querySelector("div").addEventListener("click",function(){
this.style.transform=window.getComputedStyle(this).getPropertyValue("transform")||"initial";
this.classList.remove("spin");
});
div{
background:#000;
height:50px;
width:50px;
}
.spin{
animation:spin 2s linear infinite;
}
@keyframes spin{
to{
transform:rotate(360deg);
}
}
body,html{height:100%;}body{align-items:center;display:flex;justify-content:center;}
<div class="spin"></div>
Обратите внимание, что я в настоящее время на машине, на которой не установлены браузеры, для которых по-прежнему требуется transform
свойство с префиксом. В моих тестах префиксные свойства переводились в нефиксированные getComputedStyle
но я не уверен, является ли это функцией этой функции или дело в том, что браузер не требует префиксной версии. Если вы заметили, что это не работает в браузерах, которые требуют transform
чтобы иметь префикс, вам нужно будет предоставить дополнительные запасные варианты. Ниже приведена функция JavaScript, отредактированная для включения полного списка, который может вам потребоваться:
document.querySelector("div").addEventListener("click",function(){
var style=window.getComputedStyle(this);
this.style.transform=style.getPropertyValue("transform")||style.getPropertyValue("-webkit-transform")||style.getPropertyValue("-ms-transform")style.getPropertyValue("-moz-transform")||"initial";
this.classList.remove("spin");
});