js 多张图片加载 环形进度条

css 部分使用 svg 绘制环形

1 svg{width:100px; height: 100px; margin:15% auto 25%; box-sizing:border-box; display: block;}
2 svg circle{fill:none;cx:50;cy:50;}
3  /* svg text{x:40;y:55;} 不起作用  原因不知*/
4 svg #txt{ x:35;y:55%;fill:red;}
5 svg #backdrop{stroke-linecap:round;stroke:#333; stroke-width:2px;r:48;}
6 svg #progress{stroke:#690; stroke-dasharray:0 1000;stroke-width:3px;r:48;}

此处的 js 放在 body 标签中

 1 var mulitImg = [
 2           ‘http://www.cctv.com/img/2.png‘,
 3           ‘https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1520235078852&di=a57664a8e118c403bf2d378757e40b08&imgtype=0&src=http%3A%2F%2Fs9.knowsky.com%2Fbizhi%2Fl%2F100001-105083%2F2009530184324945217430590.jpg‘,
 4           ‘https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1520235078852&di=0a127ba0bf50857c86bd886ef355d2c9&imgtype=0&src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F4%2F593a3dba085e1.jpg‘,
 5           ‘https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1520235078851&di=f1dacfe012d7e71c7469a4b0b4df2708&imgtype=0&src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2Fe%2F5902ad376edd5.jpg‘,
 6           ‘https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1520235078851&di=b6ab0dcfbe939057988cabb0bd0f3899&imgtype=0&src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F1%2F535a1f52d5f8c.jpg‘,
 7           ‘https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1520235078850&di=4f0693db95d8e117035f77d7a1d5e493&imgtype=0&src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2Ff%2F594336ec75b26.jpg‘
 8
 9        ];
10   // 调用函数, 传入图片数组
11   load_img(mulitImg);
12   function load_img(mulitImg)
13   {
14      var svg=document.createElementNS(‘http://www.w3.org/2000/svg‘,‘svg‘);
15        document.body.appendChild(svg);
16       var svg_html=‘<circle id="backdrop" /><text x="35" y="55%" fill="red" id="txt">0%</text><circle id="progress"  />‘;
17         svg.innerHTML=svg_html;
18
19      var idtxt=document.getElementById(‘txt‘);
20      var progrees=document.getElementById(‘progress‘);
21      var pro_v=parseInt(css(progrees,‘stroke-dashoffset‘));
22      var r=parseInt(css(progrees,‘r‘));     // 半径
23      var arcLength=Math.floor(2*Math.PI*r); // 周长
24
25      var taget=100;
26      var img = [],
27           flag = 0;
28
29        var imgTotal = mulitImg.length;
30             //添加过渡效果
31            progrees.style.transitionDuration=arcLength/imgTotal/100+‘s‘;
32            idtxt.style.transitionDelay=arcLength/imgTotal/100/2+‘s‘;
33
34        for(var i = 0 ; i < imgTotal ; i++){
35           img[i] = new Image();
36           img[i].index=i;
37           img[i].src = mulitImg[i]
38           // 图片加载完成
39           img[i].onload = function(){
40
41              //第i张图片加载完成
42              flag++;
43              idtxt.textContent=(flag/imgTotal).toFixed(2) *100+‘%‘;
44              progrees.style.strokeDasharray=arcLength*(flag/imgTotal)+‘ 1000‘;// 第二个值必须大于周长
45
46              if( flag == imgTotal ){
47                 //全部加载完成
48              }
49           };
50           // 图片加载失败----继续执行,可以选择用另一张图片替换
51           img[i].onerror = function(){
52              //第i张图片加载失败
53
54              flag++;  // 继续执行
55              // console.log(this.index+‘:‘+this.src)
56             idtxt.textContent=(flag/imgTotal).toFixed(2) *100+‘%‘;
57              progrees.style.strokeDasharray=arcLength*(flag/imgTotal)+‘ 1000‘;// 第二个值必须大于周长
58              if( flag == imgTotal ){
59                 //全部加载完成
60              }
61           };
62        }
63
64       // 获取css 样式
65       function css(t, n) {
66           return t.currentStyle ? t.currentStyle[n] : getComputedStyle(t, !1)[n]
67         }
68   }

原文地址:https://www.cnblogs.com/xuey/p/8508606.html

时间: 2024-11-05 20:33:52

js 多张图片加载 环形进度条的相关文章

iOS 图片加载 圆形进度条

项目中有加载网络图片的需求,加一个加载的进度条会提高用户体验,网络不好的时候会清晰的看到图片加载的进度,比让用户看着满屏幕空白好.下面是我们项目自己封装的圆形进度条,分享给大家. 其实实现原理很简单,只是根据图片加载的进度来绘制一个圆. 先来看.h文件,需要一个进度的属性和进度条展示位置的方法: @property (nonatomic, assign) CGFloat progress; +(HMProgressView *)showHMProgressView:(UIView *)paren

【笔记】canvas图片预加载及进度条的实现

/*star *loading模块 *实现图片的预加载,并显示进度条 *参数:图片数组对象,加载完成的回调函数 */ function loadImages(sources,callback){ var loadedImages = 0; var numImages = 0; ctx.font='14px bold'; ctx.lineWidth=5; var clearWidth=canvas.width; var clearHeight=canvas.height; // get num o

VS2015 Cordova实现WebView加载页面进度条(Android)

因为使用Cordova做app时,加载页面没有进度条,用户无法感知打开进度,故加入进度条,具体实现如下: 1.  如果项目没有生成过apk,需先生成一次,这样在项目下面才会出现platforms/android的文件夹. 2.  进入项目/platforms/android/src文件夹下,在你程序包名目录下找到你的MainActivity.java文件,增加一个Dialog和ProgressBar用来显示页面加载进度,具体代码实现如下: 1 /* 2 Licensed to the Apach

cocos2dx 3.x(加载cocostudio进度条)

1 // 2 // MyLoagingScene.hpp 3 // My 4 // 5 // Created by work on 16/10/13. 6 // 7 // 8 9 #ifndef MyLoagingScene_hpp 10 #define MyLoagingScene_hpp 11 12 #include <stdio.h> 13 #include "cocos2d.h" 14 #include <editor-support/cocostudio/C

TangIDE开发技巧之自定义资源加载窗口进度条

用TangIDE开发游戏的朋友都知道,你可以像编辑普通的窗口一样编辑资源加载窗口,加入各种丰富的控件和动画效果,但是进度条相对比较单调,现在进度条默认是两张小图,加载时按九宫格来绘制,如果你不想用九宫格,想用两张水平长图替代它们,那么你可以在资源加载窗口的onSystemInit事件下,重写进度条控件(UIProgressBar)的drawBgImageH方法(这里的H表示水平形状的进度条),改变图片的绘制方式. var me = this; var win = this.getWindow()

WPF BackGroundWord 异步加载更新进度条示例

1 <Window x:Class="AsynchronousLoading.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/e

6款绚丽的js加载和进度条插件

google%E5%BC%80%E6%BA%90materialdesign%E5%9B%BE%E6%A0%87 http://www.zcool.com.cn/collection/ZMTY4OTU2OTI=.html http://www.zcool.com.cn/collection/ZMTY5NzIwNjA http://www.zcool.com.cn/collection/ZMTcwOTEwNDQ?20170922 http://www.zcool.com.cn/collection

js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面

js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 , 做手机端开发时,发现一个问题,有些浏览器,在网速比较慢的情况下,js文件没有加载完,后续的调用已经开始调用了,导致出错.后来使用此法,保证了任何时候都完全是按照js的先后顺序执行的. 源码: /** * js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 * 原理:利用 ajax 异步多线程快速加载, 每个文件加载完成后存入到加载完成数组中, * 显示到页面时完全按传入的顺

页面效果:圆形进度条 环形进度条

环形进度条(1.5秒之内倒计时) 效果做的比较粗糙,就是css的 clip属性,先切右边一半,再切左边一半.根据三角函数计算y高度 http://www.w3school.com.cn/cssref/pr_pos_clip.asp css的clip属性 <script src="http://cdn.bootcss.com/jquery/1.12.1/jquery.min.js"></script> <script type="text/java