javascript - 如何让我的网站预加载器在消失前持续 3 秒,即使页面已加载(至少停留 3 秒)

标签 javascript html

即使页面已加载,我也需要 gif 至少等待 3 秒才能消失,有帮助吗?

var loader = document.getElementById("loader");

window.addEventListener("load", function() {

  loader.style.height = "100px";

  loader.style.width = "100px";

  loader.style.borderRadius = "50%";

  loader.style.visibility = "hidden";

})
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>repl.it</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <div id="loader">
      <img src="preload.gif" width="30%"/>
    </div>
    <script src="script.js"></script>
    <p>text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text  </p>
  </body>
</html>

最佳答案

欢迎来到SO:)
在 html 代码的第一行中,输入:

<script>
    const renderTimeStart = new Date();
    function hidePreloader(){
        // Do hiding stuff here...
        const loader = document.getElementById("loader");
        loader.style.visibility = "hidden";
    }       

    function scheduleHidePreloader(renderTimeStart){
        const passedTimeMilliSeconds = new Date() - renderTimeStart;
        const renderAfterMilliSeconds = 3000 - passedTimeMilliSeconds;
        setTimeout(hidePreloader, renderAfterMilliSeconds);
    }


    window.addEventListener("load", () => {
        scheduleHidePreloader(renderTimeStart);
    }
</script>

这样,如果在 3000 毫秒之前调用预加载器,renderAfterMilliSeconds 将计算剩余所需时间,并在超时时调用。
否则,如果超过 3000 毫秒,超时将收到负值并立即调用。

不要忘记,此代码的整个功能取决于要在 html 的第一行中(在导入任何资源之前)调用的 const renderTimeStart = new Date(); 行。

关于javascript - 如何让我的网站预加载器在消失前持续 3 秒,即使页面已加载(至少停留 3 秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60642234/

相关文章:

javascript - Angular2 中的全局对象

javascript - 鼠标悬停时更改字体颜色

html - <div> CSS透明背景

javascript - 如何在 HTML5/Html 中创建形状?

javascript - 使用 Vue 数据绑定(bind)表达 switch 语句的正确方法

javascript - 组件隐藏和显示

javascript - 数据库顶部的网络浏览器中的队列?

javascript - "Uncaught Error: NOT_ALLOWED_ERR: DOM OperationNotAllowed Exception 1"是什么意思?

javascript - 响应 "masonry-like"列而不使用砌体(试图避免位置 :absolute;)

html - 将鼠标悬停在不同的元素上时更改样式