54

ページ全体が読み込まれる前に読み込みバーを表示したいのですが。今のところ、私はほんの少しの遅延を使用しています:

$(document).ready(function(){
    $('#page').fadeIn(2000);
});

このページはすでにjQueryを使用しています。

注:これを試しましたが、うまくいきませんでした:スクリプトの実行中にバーをロードする

他の解決策も試しました。ほとんどの場合、ページは通常どおりに読み込まれるか、ページがまったく読み込まれず、表示されません。

4

5 に答える 5

89

すべてのページをカバーする読み込み情報/.gifでdiv#overlayを使用します。

<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();
});

ローディングバーの例を次に示します。

jsBinデモ

;(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);
}());
*{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;
}
<div id="overlay">
  <div id="progstat"></div>
  <div id="progress"></div>
</div>

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

于 2012-06-17T16:06:07.763 に答える
23

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%;
}
​

デモ

于 2012-06-17T16:22:35.170 に答える
9

このウィンドウでデータを読み込もうとすると、このgifが読み込まれます。

HTML

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>

ここに画像の説明を入力してください

于 2019-05-30T09:56:07.617 に答える
2

私は最近、プロジェクト用にVanillaJSでページローダーを作成しましたが、他のすべての回答はjQueryベースであるため、共有したいと思いました。これはプラグアンドプレイのワンライナーです。

let settings={backgroundColor:"#2774ab",filterBrightness:2,timeOnScreen:100},u=document.querySelector("*"),s=document.createElement("style"),a=document.createElement("div"),m="http://www.w3.org/2000/svg",g=document.createElementNS(m,"svg"),c=document.createElementNS(m,"circle");document.head.appendChild(s),s.innerHTML="@keyframes swell{to{transform:rotate(360deg)}}",a.setAttribute("style","background-color:"+settings.backgroundColor+";color:"+settings.backgroundColor+";display:flex;align-items:center;justify-content:center;position:fixed;top:0;height:100vh;width:100vw;z-index:2147483647"),document.body.prepend(a),g.setAttribute("style","height:50px;filter:brightness("+settings.filterBrightness+");animation:.3s swell infinite linear"),g.setAttribute("viewBox","0 0 100 100"),a.prepend(g),c.setAttribute("cx","50"),c.setAttribute("cy","50"),c.setAttribute("r","35"),c.setAttribute("fill","none"),c.setAttribute("stroke","currentColor"),c.setAttribute("stroke-dasharray","165 57"),c.setAttribute("stroke-width","10"),g.prepend(c),u.style.pointerEvents="none",u.style.userSelect="none",u.style.cursor="wait",window.onload=(()=>{setTimeout(()=>{u.style.pointerEvents="",u.style.userSelect="",u.style.cursor="",a.remove()},settings.timeOnScreen)});

基礎

  • 必要なスタイルを含む<script>、要素に追加された要素を生成します。<head>
  • <div>要素の前にオーバーレイとして機能する要素を生成し<body>ます。
  • <svg>以前に生成された要素の前に、ローダーとして機能する要素を生成し<div>ます。
  • 自己window.onload生成された要素は自動的に削除されます。

最新バージョンは私のGitHubで入手できます。

デモ

設定

let settings = {
    backgroundColor: "#2774ab",
    filterBrightness: 2,
    timeOnScreen: 100
}, //...
オプション 説明
backgroundColor 許容値については、MDNWebDocsの色を参照してください。background-color CSSプロパティは、要素の背景色を設定します。デフォルトはWordpressの濃い青のアクセント#2774ab #2774ab
filterBrightness またはパーセンテージsvgローダー要素の明るさ( brightness()CSS関数)。下の値100%はローダーを暗くし、上の値はローダーを100%明るくします。補間のlacuna値はです1。デフォルトは2
timeOnScreen ポジティブinteger。画面上の時間は、ページの読み込み時間に追加されます。デフォルトは100ミリ秒です。
于 2021-01-12T20:33:29.727 に答える
-1

セマンティックUIも役立つ場合があり、読み込み中のアイコンを表示および非表示にするための単純な1つのライナーがあります。

例えば:<div class="ui active centered inline loader"></div>

ソース:https ://semantic-ui.com/elements/loader.html

コードサンプルが見つかりました:https ://codepen.io/fujiyamayuta/pen/JBxxJO

上記のコードサンプルのJSファイルには小さなタイプミスがありますが、修正されたものを以下に示します。

// ** Loader ON
$('#dimmer').dimmer('show');

// ** Loader OFF
// $('#dimmer').dimmer('hide');
于 2021-05-04T09:00:33.663 に答える