javascript - 以最短显示时间加载屏幕

标签 javascript jquery html css

我有一个带有纯色背景的固定 div 和一些我用作加载屏幕的文本,当通过 $(window).load 完全加载页面时,这些文本会淡出。问题在于加载器上有实际信息,它需要在淡出之前启动最短时间。但是,如果页面加载速度快于该最短时间,我不希望它过早消失,而且我也不希望它在网站加载后也停留在最短时间之后,这是我被难住了。

逻辑上需要这样操作: - 淡入,等待 5 秒 -页面加载 -如果 5 秒过去了,立即淡出 -else 仅等待剩余时间,然后淡出(换句话说,不要在加载后 5 秒开始计数)

我通常只有一个更容易立即显示的加载器,然后我添加类以在加载后通过不透明度的 CSS 转换隐藏它,但是因为我需要淡入淡出然后淡出加载文本并且还保持最短时间而不只是添加它作为加载后的延迟,这有点棘手。

几年前有人在这里问过这个问题,但没有正确的答案:jQuery loading screen with minimum viewing time

宁愿坚持使用 JS/jQuery 和 CSS。任何帮助将不胜感激,谢谢!

最佳答案

只要设置一个timeout 五秒,检查窗口是否加载,如果是,隐藏它。

加载时,检查是否已过五秒,如果已过,则将其隐藏。

我会这样做:

var loader = (function(window, $loadingScreen) {

    var elapsed = false;
    var loaded = false;

    setTimeout(function() {
        elapsed = true;
        if (loaded)
            hideLoadingScreen();
    }, 5000);

    var hideLoadingScreen = function() {
        //do whatever
    }

    $(window).on('load', function() {
        if (elapsed) {
            hideLoadingScreen();
        }
    });
}(window, $('#loader'))

因此 - 为简化起见,我们只关心页面是否已加载,以及是否已过去 5 秒。因此,如果在这两个事件中,我们检查另一个事件是否已经发生,我们知道它将在五秒(如果页面已加载)或页面加载时(如果已过五秒)触发。

关于javascript - 以最短显示时间加载屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43552257/

相关文章:

html - 我无法正确构建 CSS 下拉菜单。另外,如何使它从垂直下拉到水平下拉?

Html CSS 表格行问题

javascript - MeteorJS 检查模板实例是否有 DOM

javascript - 标签和内部标签的工具提示

javascript - vue Mounted() 中的 setInterval 函数不起作用

jquery - 在客户端的 jqGrid 中编辑数据,然后批量发送到服务器?

javascript - 从谷歌地图 drawingManager V3 中删除多边形

html - 使用 HTML <img> 标签作为背景图片而不是 CSS background-image 属性?

javascript - axios 没有解决,状态仍然是一个 promise

javascript - 无法让异步函数在简单的 NodeJS 脚本中工作