延迟网站页面的执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了延迟网站页面的执行相关的知识,希望对你有一定的参考价值。

我正在开发一个网站,它有点沉重,所以我需要做那些加载动画,使网站在加载所有元素和图像之前开始。

请记住,我有很多CSS动画和jQuery动画,所以我不能使用document.ready因为这只停止javascript动画而不是CSS动画。

即使没有加载动画,但最重要的是在加载所有内容之后延迟每件事的执行或外观

答案

将以下脚本添加到文档的head标记中。在JSFiddle上查看它的demo

<html>
  <head>
    <script>
    /* SimplePageLoader */
    
    // Interpreter first checks loading state
    var isLoading = true,
        overlay = document.createElement("div");
    
    // A little bit of styling
    overlay.id = "before-content-overlay";
    overlay.style.background = "#ffffff";
    overlay.style.display = "block";
    overlay.style.position = "absolute";
    overlay.style.top = "0";
    overlay.style.bottom = "0";
    overlay.style.right = "0";
    overlay.style.left = "0";
    
    // SVG Spinner
    overlay.innerHTML = "<svg class="lds-spinner" width="64pxheight="64pxxmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" style="background: none;"><g transform="rotate(0 50 50)"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="#000000"><animate attributeName="opacity" values="1;0" times="0;1" dur="1s" begin="-0.9166666666666666s" repeatCount="indefinite"></animate></rect></g><g transform="rotate(30 50 50)"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="#000000"><animate attributeName="opacity" values="1;0" times="0;1" dur="1s" begin="-0.8333333333333334s" repeatCount="indefinite"></animate></rect></g><g transform="rotate(60 50 50)"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="#000000"><animate attributeName="opacity" values="1;0" times="0;1" dur="1s" begin="-0.75s" repeatCount="indefinite"></animate></rect></g><g transform="rotate(90 50 50)"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="#000000"><animate attributeName="opacity" values="1;0" times="0;1" dur="1s" begin="-0.6666666666666666s" repeatCount="indefinite"></animate></rect></g><g transform="rotate(120 50 50)"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="#000000"><animate attributeName="opacity" values="1;0" times="0;1" dur="1s" begin="-0.5833333333333334s" repeatCount="indefinite"></animate></rect></g><g transform="rotate(150 50 50)"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="#000000"><animate attributeName="opacity" values="1;0" times="0;1" dur="1s" begin="-0.5s" repeatCount="indefinite"></animate></rect></g><g transform="rotate(180 50 50)"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="#000000"><animate attributeName="opacity" values="1;0" times="0;1" dur="1s" begin="-0.4166666666666667s" repeatCount="indefinite"></animate></rect></g><g transform="rotate(210 50 50)"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="#000000"><animate attributeName="opacity" values="1;0" times="0;1" dur="1s" begin="-0.3333333333333333s" repeatCount="indefinite"></animate></rect></g><g transform="rotate(240 50 50)"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="#000000"><animate attributeName="opacity" values="1;0" times="0;1" dur="1s" begin="-0.25s" repeatCount="indefinite"></animate></rect></g><g transform="rotate(270 50 50)"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="#000000"><animate attributeName="opacity" values="1;0" times="0;1" dur="1s" begin="-0.16666666666666666s" repeatCount="indefinite"></animate></rect></g><g transform="rotate(300 50 50)"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="#000000"><animate attributeName="opacity" values="1;0" times="0;1" dur="1s" begin="-0.08333333333333333s" repeatCount="indefinite"></animate></rect></g><g transform="rotate(330 50 50)"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="#000000"><animate attributeName="opacity" values="1;0" times="0;1" dur="1s" begin="0s" repeatCount="indefinite"></animate></rect></g></svg>";
    
    var spinner = overlay.childNodes[0];
    
    spinner.style.width = "64px";
    spinner.style.height = "64px";
    spinner.style.position = "absolute";
    spinner.style.left = spinner.style.top = "calc(50% - 32px)";
   
    // Once loaded
    window.onload = function() {
    	isLoading = false;
      
    	// Uncomment to test and comment/remove above statement
      // setTimeout(function() { isLoading = false }, 1000);
    };
    
    setInterval(function() {
      if (isLoading && !document.body.contains(overlay)) {
        document.body.appendChild(overlay);
      } else if (!isLoading && document.body.contains(overlay)) {
        // If loaded, overlay should disappear
        overlay.parentNode.removeChild(overlay);
      }
    }, 150);
    </script>
  </head>
  <body>
    <h1>Hidden until fully loaded/mounted</h1>
  </body>
</html>

以上是关于延迟网站页面的执行的主要内容,如果未能解决你的问题,请参考以下文章

如何减少页面之间跳转的延迟(片段/活动)

如何延迟或异步此 WordPress javascript 片段以最后加载以加快页面加载时间?

HTML代码片段

HTML代码片段

Android中切换标签片段之间的延迟

如何使用延迟python代码更慢地抓取[重复]