js 多张图片加载 环形进度条
css 部分使用 svg 绘制环形
svg{width:100px; height: 100px; margin:15% auto 25%; box-sizing:border-box; display: block;}
svg circle{fill:none;cx:;cy:;}
/* svg text{x:40;y:55;} 不起作用 原因不知*/
svg #txt{ x:;y:55%;fill:red;}
svg #backdrop{stroke-linecap:round;stroke:#333; stroke-width:2px;r:;}
svg #progress{stroke:#690; stroke-dasharray:0 1000;stroke-width:3px;r:;}
此处的 js 放在 body 标签中
var mulitImg = [
'http://www.cctv.com/img/2.png',
'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',
'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',
'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',
'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',
'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' ];
// 调用函数, 传入图片数组
load_img(mulitImg);
function load_img(mulitImg)
{
var svg=document.createElementNS('http://www.w3.org/2000/svg','svg');
document.body.appendChild(svg);
var svg_html='<circle id="backdrop" /><text x="35" y="55%" fill="red" id="txt">0%</text><circle id="progress" />';
svg.innerHTML=svg_html; var idtxt=document.getElementById('txt');
var progrees=document.getElementById('progress');
var pro_v=parseInt(css(progrees,'stroke-dashoffset'));
var r=parseInt(css(progrees,'r')); // 半径
var arcLength=Math.floor(2*Math.PI*r); // 周长 var taget=100;
var img = [],
flag = 0; var imgTotal = mulitImg.length;
//添加过渡效果
progrees.style.transitionDuration=arcLength/imgTotal/100+'s';
idtxt.style.transitionDelay=arcLength/imgTotal/100/2+'s'; for(var i = 0 ; i < imgTotal ; i++){
img[i] = new Image();
img[i].index=i;
img[i].src = mulitImg[i]
// 图片加载完成
img[i].onload = function(){ //第i张图片加载完成
flag++;
idtxt.textContent=(flag/imgTotal).toFixed(2) *100+'%';
progrees.style.strokeDasharray=arcLength*(flag/imgTotal)+' 1000';// 第二个值必须大于周长 if( flag == imgTotal ){
//全部加载完成
}
};
// 图片加载失败----继续执行,可以选择用另一张图片替换
img[i].onerror = function(){
//第i张图片加载失败 flag++; // 继续执行
// console.log(this.index+':'+this.src)
idtxt.textContent=(flag/imgTotal).toFixed(2) *100+'%';
progrees.style.strokeDasharray=arcLength*(flag/imgTotal)+' 1000';// 第二个值必须大于周长
if( flag == imgTotal ){
//全部加载完成
}
};
} // 获取css 样式
function css(t, n) {
return t.currentStyle ? t.currentStyle[n] : getComputedStyle(t, !1)[n]
}
}
js 多张图片加载 环形进度条的更多相关文章
- android 网络异步加载数据进度条
ProgressDialog progressDialog = null; public static final int MESSAGETYPE = 0; private void execute( ...
- js - 预加载+监听图片资源加载制作进度条
这两天遇到一个新需求:一个一镜到底的h5动画.因为功能的特殊性,就要求我们提前监听页面的静态图片是否全部加载完毕.即处理预加载. 总结下来,下次这种需求需要提前注意以下几点: 一.图片而不是背景图 本 ...
- cocos2dx 3.x(加载cocostudio进度条)
// // MyLoagingScene.hpp // My // // Created by work on 16/10/13. // // #ifndef MyLoagingScene_hpp # ...
- WPF BackGroundWord 异步加载更新进度条示例
<Window x:Class="AsynchronousLoading.MainWindow" xmlns="http://schemas.microsoft.c ...
- WebView长按保存图片;WebView不跳转到系统的浏览器;WebView加载显示进度条;WebView返回事件处理;
直接看代码即可,代码里面注释写的很清楚,这个类拉下来就能用: 写法和命名比较粗暴,但也简单易懂: public class MainActivity extends AppCompatActivity ...
- pace.js – 网页自动加载进度条插件
网站顶部的页面加载进度条是怎么实现的,页面的加载进度百分比,有时候获取是比较麻烦的,当然也可以利用一些优秀的JavaScript插件来实现,今天就为大家介绍这样子的一款插件:pace.js. [官方网 ...
- js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面
js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 , 做手机端开发时,发现一个问题,有些浏览器,在网速比较慢的情况下,js文件没有加载完,后续的调用已经开始调用了, ...
- JS判断单、多张图片加载完成
转:http://www.daqianduan.com/6419.html 试想,如果模板中有图片,此时如何判断图片是否加载完成? 在此之前来了解一下jquery的ready与window.onloa ...
- 自定义环形进度条RoundProgressBar
一.效果图: Canvas画圆环说明: 圆环宽度不必在意,只是画笔宽度设置后达到的效果. 二.实现步骤 1.自定义View-RoundProgressBar 2.设置属性resources(decle ...
随机推荐
- 安装完Ubuntu 14.04后的几件事
周末折腾一下Ubuntu 14.04,稍作记录: 1. 切换源,我还是钟情163的(ps, 这里如果用的以前13.04时候163的源会有问题,记得配置最新的http://mirrors.163.com ...
- android手势(gesture)
需要实现两个接口,OnTouchListener ,OnGestureListener 在接口方法中实现各种事件 详见:http://www.cnblogs.com/JczmDeveloper/p/3 ...
- linux下vtune使用
安装:http://www.cnblogs.com/jiu0821/p/5943533.html 终端输入amplxe-gui,打开vtune界面. 点击new project,进入project p ...
- php环境引起的"syntax error unexpected $end"
今天在网上淘了一段php和javascript的二级联动下拉菜单的代码.本地运行的时候,一直提示错误 syntax error unexpected $end 本来还以为是括号或者标签没有用好,但是仔 ...
- 【转】phpize学习
为什么使用phpize? 比如刚开始安装的时候使用 ./configure --prefix=/usr/local/php7 --exec-prefix=/usr/local/php7 --bindi ...
- 算法Sedgewick第四版-第1章基础-017一约瑟夫问题(Josephus Problem)
/************************************************************************* * * Josephus problem * * ...
- can基础知识介绍
1.什么是can 2.can的特点 2.物理层特征 我们使用ISO11898标准,物理层特征如图所示 3.帧的种类介绍 实际上有一些帧是有硬件来实现的. 4.数据帧介绍 5.总线仲裁 6.位时序(用于 ...
- 初识Servlet(JSP)
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层. Servle ...
- 解决低版本Eclipse安装Findbugs插件无法显示问题
问题描述 Eclipse安装Findbugs,显示安装成功,但是重启Eclipse在[Window]-[show view]-[other]中没有显示 原因 Eclipse版本太低,新版的Findbu ...
- linux源码安装apache
apache安装之前,需要安装APR.APR-Util和PCRE依赖包 下载 Apache 下载地址: http://httpd.apache.org/download.cgi (打开找最 ...