【发布时间】:2020-06-20 23:31:49
【问题描述】:
我想使用带有“transitionend”的 EventListenner 链接多个图像,例如我有一个石头剪刀布游戏,每次单击其中一个按钮进行播放时,我都希望图像旋转从石头到纸,再到剪刀,每次都等待过渡结束,然后再次交换图像,模拟现实生活中的游戏交互。我已经设法链接其中一个转换,但我被困在如何为多个连续的 "transitionend" 事件执行此操作的逻辑
let images = ['https://adiihd.github.io/rock-paper-scissors-game/img/rock.png', 'https://adiihd.github.io/rock-paper-scissors-game/img/paper.png', 'https://adiihd.github.io/rock-paper-scissors-game/img/scissors.png'];
const buttons = document.querySelectorAll('button');
// we use the .forEach method to iterate through each button
buttons.forEach((button) => {
// and for each one we add a 'click' listener
button.addEventListener('click', (e) => {
let userImg = document.querySelector("#userimg");
userImg.classList.add("playing");
userImg.addEventListener('transitionend', () => {
userImg.classList.remove("playing");
userImg.setAttribute('src', images[1]);
});
userImg.addEventListener('transitionend', () => {
userImg.classList.remove("playing");
userImg.setAttribute('src', images[2]);
});
});
});
#userimg {
transition: all 0.4s ease;
width: 200px;
}
.playing {
transform: rotate(30deg);
}
<img id="userimg" src="https://adiihd.github.io/rock-paper-scissors-game/img/rock.png">
<br>
<button id="Rock">Rock</button>
<button id="Paper">Paper</button>
<button id="Scissors">Scissors</button>
【问题讨论】:
-
我会考虑使用
setTimeout而不是 CSS 类。
标签: javascript html css dom-events addeventlistener