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