使用Javascript为元素设置动画

使用Javascript为元素设置动画,javascript,animation,Javascript,Animation,如何使用Javascript设置元素的动画? 与jquery类似。例如: $( "button.continue" ).animate({left: "100px", top: "200px"}, 5000); 传递属性、所需值和时间的位置 在我的例子中,我需要左侧和顶部位置来设置动画和滑动 解决方案 我已经按照@IceMetalPunk的建议做了,并且仅在需要制作动画时才通过css添加了动画 document.getElementByIdanimate.addEventListenercl

如何使用Javascript设置元素的动画? 与jquery类似。例如:

$( "button.continue" ).animate({left: "100px", top: "200px"}, 5000);
传递属性、所需值和时间的位置

在我的例子中,我需要左侧和顶部位置来设置动画和滑动

解决方案

我已经按照@IceMetalPunk的建议做了,并且仅在需要制作动画时才通过css添加了动画

document.getElementByIdanimate.addEventListenerclick,函数{ 设e=document.getElementById'elementToAnimate'; e、 classList.addanimate; setTimeout=>e.classList.removeanimate,500; e、 style.top=Math.floorMath.random*window.innerHeight+'px'; e、 style.left=Math.floorMath.random*window.innerWidth+'px'; }; document.getElementByIddontAnimate.addEventListenerclick,函数{ 设e=document.getElementById'elementToAnimate'; e、 style.top=Math.floorMath.random*window.innerHeight+'px'; e、 style.left=Math.floorMath.random*window.innerWidth+'px'; }; 氨元素{ 宽度:20px; 高度:20px; 背景:红色; 位置:绝对位置; 排名:0; 左:0; } 元素为动画{ 过渡:左侧500ms缓进缓出,顶部500ms缓进缓出; } 使有生气
不要设置动画尝试使用CSS转换。在CSS中,执行以下操作:

button.continue {
  transition: 5s;
}
然后在JS中,只需设置左/顶值:

document.querySelectorAll('button.continue').forEach(button => {
  button.style.left = '100px';
  button.style.top = '200px';
});

尝试使用CSS转换。在CSS中,执行以下操作:

button.continue {
  transition: 5s;
}
然后在JS中,只需设置左/顶值:

document.querySelectorAll('button.continue').forEach(button => {
  button.style.left = '100px';
  button.style.top = '200px';
});
请看下面的图片。这是一个实验性的特性,所以主要的Safari可能会成为您的一个问题。否则,你可以按照其他人已经指出的方法来做。

看一下。这是一个实验性的特性,所以主要的Safari可能会成为您的一个问题。否则,您可以按照其他人已经指出的方式执行。

尝试使用网络组件,您可以仅使用VanillaJS执行任何类型的动画,有预定义的动画,如Animate.css,但您可以使用关键帧创建自定义动画:

你好,世界 尝试使用WebComponents,您可以仅使用VanillaJS执行任何类型的动画,有预定义的动画,如Animate.css,但您可以使用关键帧创建自定义动画:

你好,世界
注:此API可能仍会更改。我在Firefox中测试了这个

document
   .querySelector(".text.thank-you")
   .animate({ opacity: [0, 1] }, { duration: 5000, iterations: 1, easing: "ease-out" })
   .onfinish = (e) => {
        e.target.effect.target.style.opacity = 1;
   };

注:此API可能仍会更改。我在Firefox中测试了这个

document
   .querySelector(".text.thank-you")
   .animate({ opacity: [0, 1] }, { duration: 5000, iterations: 1, easing: "ease-out" })
   .onfinish = (e) => {
        e.target.effect.target.style.opacity = 1;
   };

为什么不使用CSS呢?@SebastianSimon我不想每次都设置动画,如果我在元素中插入一个过渡,它将在每次更改其左侧和顶部位置时设置动画,为什么不使用CSS呢?@SebastianSimon我不想每次都设置动画,如果我在元素中插入一个过渡,它将在每次更改其左和顶部位置时都设置动画,我不想每次都设置动画,如果我在元素中插入一个过渡,它将在每次更改其左和顶部位置时设置动画。在这种情况下,我建议在需要设置动画时打开和关闭动画类。该类只有transition属性,因此当它被切换为打开时,属性将设置动画,而当它被切换为关闭时,属性将不会设置动画。我不想每次都设置动画,如果我在元素中插入一个transition,它将在每次更改其leftand top位置时设置动画。在这种情况下,我建议在需要设置动画类时打开和关闭动画类。该类将只有transition属性,因此当它被切换为打开时,属性将被设置动画,而当它被切换为关闭时,属性将不会被设置动画。