у меня есть элемент <button>, который я хочу, когда этот элемент нажат, кнопка сдвинуться вниз на 200 пикселей
используя этот код в событии onclick кнопки, чтобы добавить класс, поэтому анимация будет работать:
JS
function anime() {
var element = document.getElementById("tagd");
element.classList.toggle("visible");
}
HTML
<button onclick = "anime()" id = "tagd">
CSS
.visible {
-webkit-animation: myfirst 5s 2; /* Safari 4.0 - 8.0 */
-webkit-animation-direction: normal; /* Safari 4.0 - 8.0 */
animation: myfirst 5s 2;
animation-direction: normal;
position: relative;
}
/* Safari 4.0 - 8.0 */
@-webkit-keyframes myfirst {
0% {top: 0px;}
25% {top: 50px;}
50% {top: 100px;}
75% {top: 150px;}
100% {top: 200px;}
}
@keyframes myfirst {
0% {top: 0px;}
25% {top: 50px;}
50% {top: 100px;}
75% {top: 150px;}
100% {top: 200px;}
}
Итак, проблема в следующем:






Поскольку вы только меняете положение кнопки, я могу посоветовать вам следующее.
#tagd{
transition: 5s transform
}
#tagd.visible{
transform: translateY(200px)
}
Анимация довольно проста, поэтому ее использование может повысить читабельность вашего кода. Немного тривиально, но использование «translate» вместо «top» также улучшает визуальную производительность.
Узнайте больше об этом, если хотите: https://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/
@ShahabOuraie Я рад, что это помогло :)
Измените эти строки в своем коде, поставив 1 вместо 2 в конце этих строк. Надеюсь, это сработает для вас.
-webkit-animation: myfirst 5s 1; /* Safari 4.0 - 8.0 */
animation: myfirst 5s 1;
tnx вам так много! извините, если я не отметил ваш ответ
Добавьте свойство will-change: top в класс .visible
я хочу воспроизвести анимацию после нажатия кнопки! если положить
transition: 5s transformвнутрь#tagd, то сразу заиграет! не так ли?