Display a loading bar before the entire page is loaded

前端 未结 3 1061
名媛妹妹
名媛妹妹 2020-11-29 16:15

I would like to display a loading bar before the entire page is loaded. For now, I\'m just using a small delay:

$(document).ready(function(){
    $(\'#page\')         


        
相关标签:
3条回答
  • 2020-11-29 16:37

    Use a div #overlay with your loading info / .gif that will cover all your page:

    <div id="overlay">
         <img src="loading.gif" alt="Loading" />
         Loading...
    </div>
    

    jQuery:

    $(window).load(function(){
       // PAGE IS FULLY LOADED  
       // FADE OUT YOUR OVERLAYING DIV
       $('#overlay').fadeOut();
    });
    

    Here's an example with a Loading bar:

    jsBin demo

      <div id="overlay">
        <div id="progstat"></div>
        <div id="progress"></div>
      </div>
    
      <div id="container">
        <img src="http://placehold.it/3000x3000/cf5">
      </div>
    

    CSS:

    *{margin:0;}
    body{ font: 200 16px/1 sans-serif; }
    img{ width:32.2%; }
    
    #overlay{
      position:fixed;
      z-index:99999;
      top:0;
      left:0;
      bottom:0;
      right:0;
      background:rgba(0,0,0,0.9);
      transition: 1s 0.4s;
    }
    #progress{
      height:1px;
      background:#fff;
      position:absolute;
      width:0;                /* will be increased by JS */
      top:50%;
    }
    #progstat{
      font-size:0.7em;
      letter-spacing: 3px;
      position:absolute;
      top:50%;
      margin-top:-40px;
      width:100%;
      text-align:center;
      color:#fff;
    }
    

    JavaScript:

    ;(function(){
      function id(v){ return document.getElementById(v); }
      function loadbar() {
        var ovrl = id("overlay"),
            prog = id("progress"),
            stat = id("progstat"),
            img = document.images,
            c = 0,
            tot = img.length;
        if(tot == 0) return doneLoading();
    
        function imgLoaded(){
          c += 1;
          var perc = ((100/tot*c) << 0) +"%";
          prog.style.width = perc;
          stat.innerHTML = "Loading "+ perc;
          if(c===tot) return doneLoading();
        }
        function doneLoading(){
          ovrl.style.opacity = 0;
          setTimeout(function(){ 
            ovrl.style.display = "none";
          }, 1200);
        }
        for(var i=0; i<tot; i++) {
          var tImg     = new Image();
          tImg.onload  = imgLoaded;
          tImg.onerror = imgLoaded;
          tImg.src     = img[i].src;
        }    
      }
      document.addEventListener('DOMContentLoaded', loadbar, false);
    }());
    
    0 讨论(0)
  • 2020-11-29 16:51

    HTML

    <div class="preload">
    <img src="http://i.imgur.com/KUJoe.gif">
    </div>
    
    <div class="content">
    I would like to display a loading bar before the entire page is loaded. 
    </div>
    

    JAVASCRIPT

    $(function() {
        $(".preload").fadeOut(2000, function() {
            $(".content").fadeIn(1000);        
        });
    });​
    

    CSS

    .content {display:none;}
    .preload { 
        width:100px;
        height: 100px;
        position: fixed;
        top: 50%;
        left: 50%;
    }
    ​
    

    DEMO

    0 讨论(0)
  • 2020-11-29 16:52

    Whenever you try to load any data in this window this gif will load.

    HTML

    Make a Div

    <div class="loader"></div>
    

    CSS .

    .loader {
        position: fixed;
        left: 0px;
        top: 0px;
        width: 100%;
        height: 100%;
        z-index: 9999;
        background: url('https://lkp.dispendik.surabaya.go.id/assets/loading.gif') 50% 50% no-repeat rgb(249,249,249);
    

    jQuery

    $(window).load(function() {
            $(".loader").fadeOut("slow");
    });
    <script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
    

    0 讨论(0)
提交回复
热议问题