Я делаю анимацию для веб-сайта.
Мой клиент хочет строку с некоторыми изображениями.
Эти изображения должны постоянно переводиться при загрузке, но когда я нажимаю на строку , изображения должны ускоряться экспоненциально в течение 4 секунд: после этого веб-сайт должен сменить страницу.
Вчера я создал анимацию, изменяя длительность анимации каждые несколько миллисекунд с помощью крючка, эта стратегия была работает отлично, но мне это не нравится, потому что он кажется слишком тяжелым.
Теперь я нашел другое решение, которое использует только css и крючок для изменения класса. Учитывая это новое решение, у меня все еще есть 2 проблемы:
- после щелчка анимация перезапускается
- вторая часть анимации вычисляет задержку с самого начала, а не с первого часть анимации
Спасибо за ответ
const row = document.querySelector(".row");
row.addEventListener("click", () => row.classList.add('row-click'));
.row{
display: flex;
flex-direction:row;
overflow: hidden;
}
.cell{
background:#f00;
color:#fff;
font-size:26px;
min-width:100px;
margin-right:12px;
animation: slide-first-desktop 10s linear infinite;
}
.row-click > .cell{
animation:
slide-first-desktop 5s cubic-bezier(1,0,.74,1),
slide-first-desktop 2s linear infinite;
}
@keyframes slide-first-desktop {
0%{
transform: translateX(0px);
}
100% {
transform: translateX(-1680px);
}
}
<div class="row">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
<div class="cell">7</div>
<div class="cell">8</div>
<div class="cell">9</div>
<div class="cell">10</div>
<div class="cell">11</div>
<div class="cell">12</div>
<div class="cell">13</div>
<div class="cell">14</div>
<div class="cell">15</div>
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
<div class="cell">7</div>
<div class="cell">8</div>
</div>