网页加载进度条--6种

这里介绍6中网页加载进度条
另外发现两个很有意思的网站:http://autoprefixer.github.io/    css3兼容代码
                                                   https://preloaders.net/    定义自己喜欢的gif图片

整体思路:
1. 设置遮罩层  和  进度加载图片(可以用css3写,也可以在上面的网站中下载,下面两种都用到了)
2. 根据页面加载进度来实现,当页面加载完成时,隐藏遮罩层和小图片,显示出页面内容
3. 定时器实现



1. 定时器加载
原理:设置固定的时间后将遮罩层和加载图片隐藏,显示页面内容
效果:
网页加载进度条--6种_第1张图片


HTML
CSS
    .loading{
	     width:100%;
		 height:100%;
		 position:fixed;
		 top:0;
		 left:0;
		 z-index:1000;
		 background:#fff;
	}
	.loading .pic{
	   width:64px;
	   height:64px;
	   background:url(images/001.gif);
	   position:absolute;
	   top:0px;
	   left:0;
	   bottom:0;
	   right:0;
	   margin:auto;
	}

JS
$(function(){
	  setInterval(function(){
	     $('.loading').fadeOut();
	  },3000);
	});
    /*window.οnlοad=function(){
	  setTimeout(function(){
	     var oLoding=document.getElementById('loading');
		 oLoding.style.display='none';
	  },3000);
	}*/


2. 通过加载状态事件实现进度条
  效果同上 
用到的知识点:
document.onreadystatechange :页面加载状态改变时的事件
document.readyState: 返回当前文档的状态

JS
 document.onreadystatechange=function(){
	     if(document.readyState=='complete'){
		    $('.loading').fadeOut();
		 }
	  };

3. 通过css3来制作进度条小动画

效果:
网页加载进度条--6种_第2张图片

HTML: 

 CSS
 .loading{
	     width:100%;
		 height:100%;
		 position:fixed;
		 top:0;
		 left:0;
		 z-index:1000;
		 background:#fff;
	}
	.loading .pic{
	   width:50px;
	   height:50px;
	   position:absolute;
	   top:0px;
	   left:0;
	   bottom:0;
	   right:0;
	   margin:auto;
	}
	.loading .pic i{
	   display:block;
	   float:left;
	   width:6px;
	   height:50px;
	   background:#006699;
	   margin:0 2px;
	   -webkit-transform:scaleY(0.4);
	       -ms-transform:scaleY(0.4);
	           transform:scaleY(0.4);
	   -webkit-animation:load 1.2s infinite;
	           animation:load 1.2s infinite;
	}
   .loading .pic i:nth-child(2){-webkit-animation-delay:0.1s;animation-delay:0.1s}
   .loading .pic i:nth-child(3){-webkit-animation-delay:0.2s;animation-delay:0.2s}
   .loading .pic i:nth-child(4){-webkit-animation-delay:0.3s;animation-delay:0.3s}
   .loading .pic i:nth-child(5){-webkit-animation-delay:0.4s;animation-delay:0.4s}

	@-webkit-keyframes load{
	   0%,40%,100%{-webkit-transform:scaleY(0.4);transform:scaleY(0.4)}
	   20%{-webkit-transform:scaleY(1);transform:scaleY(1)}
	}
	@keyframes load{
	   0%,40%,100%{-webkit-transform:scaleY(0.4);transform:scaleY(0.4)}
	   20%{-webkit-transform:scaleY(1);transform:scaleY(1)}
	}
 
  

4.实时获取加载数据的进度条
效果:
网页加载进度条--6种_第3张图片
 实现原理:通过加载图像来实现效果
注意:src要写在load后面,IE中会出错

  JS
$(function(){
     
	 var oImg=$('img');
	 var num=0;

	 oImg.each(function(i){
	    var cImg=new Image();
        cImg.οnlοad=null;
		cImg.οnlοad=function(){
		  num++;

		  $('.loading b').html(parseInt(num/$('img').length*100)+'%');
          if(num>=$('img').length){
		    $('.loading').fadeOut();
		  }
		}
		cImg.src=oImg[i].src;
	 });
   });

5.进度条改变的效果
效果:
网页加载进度条--6种_第4张图片

原理:根据加载进度来改变进度条中bar的框width值
  *{margin:0;padding:0;}
    .loading{
	     width:100%;
		 height:100%;
		 position:fixed;
		 top:0;
		 left:0;
		 z-index:1000;
		 background:#fff;
	}
	.progress{
	  width:300px;
	  height:30px;
	  background:#ccc;
	  margin:200px auto;
	  position:relative;
	}
	.progress .bar{
	  position:absolute;
	  width:0%;
	  height:30px;
	  background:#006699;
	}
	.progress b{
	  display:block;
	  width:20px;
	  height:30px;
	  position:absolute;
	  left:40%;
	  top:-20px;
	}

 
0%

  JS
 $(function(){
     
	 var oImg=$('img');//获取所有图片
	 var num=0;

	 oImg.each(function(i){
	    var cImg=new Image();//新建图像对象
        cImg.οnlοad=null; //防止重复加载

		cImg.οnlοad=function(){
		  num++;

          var scale=parseInt(num/$('img').length*100);//实时更新数据
		  $('.loading .bar').css({'width':scale+'%'});//设置进度条
		  $('.loading b').html(scale+'%');//显示百分比文本

          if(num>=$('img').length){ //判断是否加载完毕
		    $('.loading').fadeOut(); 
		  }
		}
		cImg.src=oImg[i].src;//src放在load后面,是防止在IE中出错
	 });
   });

6. 根据文件加载顺序来实现加载进度条(页面顶部的加载条)

效果:

 




 



你可能感兴趣的:(js)