javascript - Javascript 事件不适用于 Element.animate()
问题描述
我正在尝试使用Element.animate()
Javascript 中的方法将动画添加到我的网站,但意识到在运行动画时不会触发动画事件。
这是我的代码:
window.onload = function () {
let list = document.querySelector(".list");
let btn = document.querySelector(".btn");
// animation events
list.addEventListener('animationstart', () => {
console.log('start')
});
list.addEventListener('animationend', () => {
console.log('end');
});
btn.onclick = () => {
list.animate([
// keyframes
{ transform: 'translateY(0px)' },
{ transform: 'translateY(-24px)' }
], {
// timing options
duration: 1000,
fill: "forwards"
});
}
}
在上面的代码中,动画运行但动画事件没有被触发。谁能解释为什么这不起作用或告诉我如何解决它?
解决方案
您没有使用 CSS 动画(由 css 类触发)。只有在使用 CSS 定义的动画或 -transition 时才会触发动画开始/结束(或过渡开始/结束)事件。
看一下示例HTMLElement: animationstart event
。
Animation
您可以直接访问-instance ,而不是开始/结束事件:
btn.onclick = () => {
// animation started
let animation = list.animate(...);
animation.onfinish = () => {
// animation ended
};
};
推荐阅读
- android - 如何获取当前的 KoinApplication 实例?
- reactjs - 反应引导模式覆盖错误
- python-3.x - 在 Dash 中限制 X 轴
- php - curl_exec 在生产环境中始终返回“无法解析主机”
- c# - 如何在 WPF 中设置形状描边的可见性
- fonts - 操作系统和应用程序如何显示表情符号?
- php - 如何在 Symfony 5 + EasyAdmin 3 中自定义表单?
- python - 寻找缺失值
- flutter - Flutter:当我使用多选下拉复选框时,“方法'[]'被调用为null。接收者:null”错误?
- java - 如何通过命令行仅对 Hybris 项目中的类运行单元测试?