javascript - Typed.js 文本动画在浏览器选项卡切换时暂停

标签 javascript jquery html css animation

我在我的网站上使用 typed.js,但我在主页 slider 上的键入文本动画方面遇到了问题。当您停留在页面上时,打字动画是同步的,但是一旦您切换选项卡,打字动画就会暂停,而背景 slider 会继续循环,从而导致文本与其相关的背景不同步。有没有什么方法可以在切换浏览器选项卡时阻止键入的动画暂停,并让它继续与背景 slider 一起循环?

这是我用于旋转木马(使用 Backstretch)和 typed.js 的 javascript

        $('bigWrapper').backstretch([
            "img/homeIntro.jpg"
          , "img/videoIntro.jpg"
          , "img/photoIntro.jpg"
          , "img/mixingIntro.jpg"
          , "img/webIntro.jpg"
        ], {fade: 750});
        
        $('bigWrapper').backstretch("pause");
        
        //autotype

        $(".TextHolder2").typed({
            strings: ["Production", "Videography", "Photography", "Audio Engineering", "Web Development"],
            typeSpeed: 30,
            backDelay: 1500,
            loop: true,
            preStringTyped: function(pos, self) {       
                $('bigWrapper').backstretch('show', pos);
            };
        });

最佳答案

这是因为浏览器如何处理 typed.js 使用的 setTimeout()。为了节省资源,当您不专注于页面/标签时,大多数浏览器会停止运行这些异步回调。

尝试在浏览器中同步两个不同的计时器是徒劳的。相反,您应该将轮播( slider )视为主计时器和从属计时器。

查看您的旋转木马插件是否有某种您可以监听的nextadvance 事件。然后看看您是否可以将类型配置为在您告诉它之前不前进;基本上是无限延迟。然后,当 advance 事件从您的轮播中触发时,您也可以告诉 typed 为 advance。这样他们就始终保持同步。

您正在使用 Backstretch它有一个开始暂停的选项。

$('whatever').backstretch({
    paused: true
});

然后您可以监听 Typed 上的事件以控制 Backstretch 转换的时间。例如,以下(猜测)将使后伸进入与输入相同的“帧”,就像即将输入帧一样。

$('something').typed({
    preStringTyped: function(pos, self) {
        $('whatever').backstretch('show', pos);
    });
});

关于javascript - Typed.js 文本动画在浏览器选项卡切换时暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45271622/

相关文章:

javascript - 在使用之前是否需要创建嵌套的 jSON 对象?

javascript - 我的 Regex 比我的 forEach 更有效吗?

javascript - 自动隐藏 tabbable 内的 "Load more"按钮

javascript - 仅追加限制 5 次 jquery .append

javascript - 如何在 jQuery 或 JS 的 HTML 选择中多次选择相同的选项?

javascript - iMacro Div 中的多个链接

javascript - 使用带有缩放透明元素的 jQuery 突出显示元素

javascript - 如何从php文件向json文件添加和删除数据?

javascript - 如何在类中扩展对象定义?

javascript - 如何在键入另一个字符时插入一个字符