Анимация CSS, onAnimationEnd Запускается только один раз

Hy stack, я пытаюсь сделать анимацию при нажатии кнопки. С React и CSS. и проблема в том, что onAnimationEnd запускается только один раз.

Я попытался внести некоторые изменения в CSS, но я не уверен, что проблема в CSS, но я не нашел хорошей документации.

@keyframes example {
  from {
    opacity: 100%;
  }
  to {
    opacity: 10%;
    left: 15%;
  }
}

.products {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  max-width: 15%;
  z-index: 3;
}

.slide-animation {
  animation: example 0.5s;
}
function App() {
  const [transition, setTransition] = useState(false)
  console.info(transition)

  return (
<div className='generalContainer'>
      <img
        src='images/products/Zero.png'
        alt='cocacola'
        onAnimationEnd = {() => setTransition({ transition: false })}
        className = {transition ? "products slide-animation " : "products"}
      />
      <div className='square center-page '>
        <h2
          className='next-button'
          onClick = {() => setTransition({ transition: true })}
        >
          Next
        </h2>
      </div>
    </div>
    )
   }

ваша анимация после запуска не может быть запущена снова, потому что она уже применена и завершена. Чтобы сбросить его, вы можете переключить класс, чтобы он был удален или заменен другим. Если вы хотите выполнять шаги, равные 50% каждый раз, вам нужно каждый раз увеличивать/уменьшать значение перевода на 50%. Ваш фрагмент не работает, вам нужно отреагировать и использовать текстовую область javascript.

G-Cyrillus 22.12.2020 21:30

Что вы подразумеваете под 50% у вас есть пост или пример?

Ethanolle 22.12.2020 21:31

?? это ваш вопрос, что вы пытаетесь сделать здесь?

G-Cyrillus 22.12.2020 21:32

Мой вопрос. у вас есть пример или сообщение, которое может объяснить мне, как «переключить класс, чтобы он был удален или заменен другим».

Ethanolle 22.12.2020 21:35
classList.toggle('myclass'); это то, о чем вы спрашиваете из моего предыдущего комментария, я думаю;) см.: developer.mozilla.org/en-US/docs/Web/API/Element/classList переведено в реакцию: stackoverflow.com/questions /36403101/переключить-класс-в-реакции
G-Cyrillus 22.12.2020 21:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
507
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

animation-iteration-count следует установить на infinite, чтобы обеспечить непрерывную анимацию в CSS. Попробуйте добавить этот CSS.

.slide-animation {
  animation: example 0.5s infinite;
}

это не очень хорошее решение, потому что анимация бесконечна. Моя цель состоит в том, чтобы каждый раз, когда я нажимаю на нее, она снова не зацикливалась.

Ethanolle 22.12.2020 21:23

Хорошо, я, возможно, неправильно понял вопрос. Виноват. Так чего же ты хочешь? Вы хотите, чтобы анимация происходила только при нажатии h2.

Imran Rafiq Rather 22.12.2020 21:25

Ваш вопрос говорит о другом :) Не могли бы вы пошагово рассказать сценарий. Я хотел бы помочь :)

Imran Rafiq Rather 22.12.2020 21:26

шаг один щелчок -> анимация происходит -> окончание анимации -> есть возможность снова нажать кнопку, чтобы анимация повторилась.

Ethanolle 22.12.2020 21:29

Я получил ваш вопрос. Без проблем. Просто дай мне немного времени. Я выполню код локально :) Не волнуйтесь, надеюсь, мы придумаем решение

Imran Rafiq Rather 22.12.2020 21:32

В любом случае, я обнаружил, что просто нужно использовать % в моих @keyframes, спасибо

Ethanolle 22.12.2020 22:17

О Великий Бро! Я просто отлаживал ваш код в песочнице кода codeandbox.io/s/animation-transition-eivyi?file=/src/App.js . Рад, что вы решили это. Бог благословил :).

Imran Rafiq Rather 22.12.2020 22:20

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