Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建有效的无限循环挥动文本动画?_Javascript_Jquery_Animation - Fatal编程技术网

Javascript 如何创建有效的无限循环挥动文本动画?

Javascript 如何创建有效的无限循环挥动文本动画?,javascript,jquery,animation,Javascript,Jquery,Animation,这就是我试图创建的效果(): 如果用户在选项卡上花不到几秒钟的时间没有聚焦,动画看起来又像第二个GIF,我看不出有什么办法可以避免。我尝试过使用requestAnimationFrame(),但我不知道如何使其正确运行 因此,我的问题是:如何防止选项卡未聚焦影响动画? 如果你能帮我在手机上更高效的话,我会给你加分。我不确定这是否能解决你的口吃问题。这个策略在概念上与您正在做的类似,但是使用CSS动画而不是js (函数(){ var el=document.queryselectoral(“.w

这就是我试图创建的效果():

如果用户在选项卡上花不到几秒钟的时间没有聚焦,动画看起来又像第二个GIF,我看不出有什么办法可以避免。我尝试过使用
requestAnimationFrame()
,但我不知道如何使其正确运行

因此,我的问题是:如何防止选项卡未聚焦影响动画?


如果你能帮我在手机上更高效的话,我会给你加分。

我不确定这是否能解决你的口吃问题。这个策略在概念上与您正在做的类似,但是使用CSS动画而不是js

(函数(){
var el=document.queryselectoral(“.wavey”)[0];
var oldText=el.innerText
var newHtml=“”;
对于(el.innerText中的变量i){newHtml+=(“”+oldText[i]+“”);}
el.innerHTML=newHtml;
})();
@关键帧波浪{
来自{transform:translateY(0);}
到{transform:translateY(-1em);}
}
h1.wavey{边缘顶部:2em;}
波跨{
显示:内联块;
动画持续时间:1s;
动画名称:wave;
动画迭代次数:无限;
动画方向:交替;
动画计时功能:轻松进出;
}

Hello World
你说的“加分”是什么意思?简单地使用gif效果如何?Ceylamunkucabaş只是一个笑话;没有任何“要点”,但我希望有人能回答这个子问题,尽管这不是必需的。@JonSG GIF是用代码制作的,但我假设你知道这一点,我想知道为什么我自己不用GIF格式制作动画。最大的原因是,我只想学习如何用代码实现这种效果,但我也想避开页面上的许多图像。@Xatenev谢谢!在发布这篇文章之前,我处于“危险地带”,听到这句话真是太好了:]这太完美了,非常感谢!我很可能会用这个;但是,有没有办法让它更“浮动”而不是“反弹”呢?您可以在h1.wavey span css中添加一个放松功能,例如动画计时功能:放松输入输出;我会用它更新我的答案!哈哈,你也获得了那些积分。干得好!
$('.header h1 span').each(function() { // each letter is contained inside a <span> element
    var that = $(this);
    setTimeout(function() {
        that.animate({
                top: "-10px"
            }, animateTime / 2)
            .animate({
                top: "10px"
            }, animateTime / 2);
    }, that.index() * 100);
});
var running = true;

document.addEventListener('visibilitychange', function(){
    console.log("Running:" + running);
    running = !document.hidden;
    if(!running) clearQueues();
})