Вот небольшая демонстрация - при нажатии я добавляю animation
(через keyframes
вместо transition
) к элементу кнопки.
Анимация ключевого кадра начинается с красной рамки и имеет прозрачную границу в середине.При использовании этого в сочетании с steps(1)
анимация обрабатывается так, как если бы она состояла из двух кадров (при 0%
и 50%
), чередующихся прозрачных и красных.Я запускаю эту анимацию дважды (это 2
) в течение 1 секунды каждый раз (это 1s
).
Обратите внимание, что в JS я удаляю класс blink
и читаю его 10 мспозже, если это уже там.Вы не можете повторно запустить анимацию ключевых кадров CSS без удаления и чтения свойства.
function blink(el) {
el.classList.remove("blink")
setTimeout(function() {
el.classList.add("blink")
}, 10);
}
button {
border: 1px solid transparent;
outline: none;
}
.blink {
animation: border-blink 1s steps(1) 2;
}
@keyframes border-blink {
0% {
border-color: red;
}
50% {
border-color: transparent;
}
}
<button onclick="blink(this)">Click Me</button>