Анимация CSS не воспроизводится плавно

у меня есть элемент <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;}
}

Итак, проблема в следующем:

  • Анимация идет вниз, затем возвращается в первую позицию.
  • Анимация не воспроизводится плавно (если вы запустите ее, вы увидите, что она воспроизводится шаг за шагом не плавно)
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
0
271
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Поскольку вы только меняете положение кнопки, я могу посоветовать вам следующее.

#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/

я хочу воспроизвести анимацию после нажатия кнопки! если положить transition: 5s transform внутрь #tagd, то сразу заиграет! не так ли?

Shahab Ouraie 11.07.2019 09:21

@ShahabOuraie Я рад, что это помогло :)

Keyboard ninja 11.07.2019 16:20

Измените эти строки в своем коде, поставив 1 вместо 2 в конце этих строк. Надеюсь, это сработает для вас.

-webkit-animation: myfirst 5s 1; /* Safari 4.0 - 8.0 */
 animation: myfirst 5s 1;

tnx вам так много! извините, если я не отметил ваш ответ

Shahab Ouraie 11.07.2019 09:28

Добавьте свойство will-change: top в класс .visible

Другие вопросы по теме