使用canvas绘制圆形进度条,或者是网页加载进度条 或者是显示你浏览了本网页多少……

由于个浏览器的计算差异,打开浏览器时 初始值有所不同,但是当拉倒网页底部时,均显示100%。

兼容性:测试浏览器 chrome 、ff 、ie9+ 都可以正常显示 ,由于ie8及以下不支持canvas 不做考虑。

设计思路:

  1 .在画布上画一个圆,作为背景圆

  2 .画第二个圆坐标相同半径相同,作为进度圆,显示当前浏览进度

  3 .使用canvas的font属性在圆中间以数字的形式显示进度 ,以百分比来显示进度

  4 .计算

    网页高度:H=document.body.scrollHeight;

    可视区高度:clientH=document.documentElement.clientHeight || document.body.scrollHeight;

    滚动高度:scrollT=document.documentElement.scrollTop || document.body.scrollTop;

    计算比例:scale=(clientH+scrollT)/H; --->结果是小数形式,需要转成百分比形式,可以写一个方法

代码分析 

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
//小数转百分数
function toPercent(point){
var str = Number(point*100).toFixed(2);
if (str < 10) {
return '0'+str+'%';
}
return str+'%';
}
// 角度转弧度
function d2a(n){
return n*Math.PI/180;
}
// 圆形进度条方法封装
function pageView(oC){
var H = document.documentElement.scrollHeight || document.body.scrollHeight;
var clientH = document.documentElement.clientHeight;
var scrollT = document.documentElement.scrollTop || document.body.scrollTop; //浏览进度 比例
var scale = (clientH+scrollT)/H ;
var ctx = oC.getContext('2d');
// 公共样式 ,清空画布
ctx.clearRect(0,0,oC.width,oC.height); // 背景圆
ctx.beginPath();
ctx.lineWidth = 10;
ctx.arc(150,150,100,d2a(0),d2a(360),false);
ctx.strokeStyle = 'skyblue';
ctx.stroke(); // 进度圆
ctx.beginPath();
ctx.arc(150,150,100,d2a(-90),d2a(scale*360-90),false)
ctx.strokeStyle = 'rgb('+Math.floor(scale*255)+','+Math.floor(scale*201)+',163)' // 变化的颜色,可写成固定颜色
ctx.stroke(); // 显示百分比
ctx.beginPath();
var percent = toPercent(scale);
ctx.lineWidth = 2;
ctx.font = '40px Microsoft YaHei';
ctx.strokeStyle = '#d1d39e';
ctx.strokeText(percent,85,165) }
window.onload = window.onresize = window.onscroll = function(){ var oC = document.getElementById('canvas');
pageView(oC) //调用 }
</script>
</head>
<body style="height: 3000px">
<canvas width="300" height="300" id="canvas" style="position: fixed; left: 30px ;bottom: 50px;">
<span>您的浏览器不支持canvas</span>
</canvas> </body>
</html>

 网页展示效果

    

  

canvas绘制圆形进度条(或显示当前已浏览网页百分比)的更多相关文章

  1. HTML5效果:Canvas 实现圆形进度条并显示数字百分比

    实现效果 1.首先创建html代码 <canvas id="canvas" width="500" height="500" styl ...

  2. canvas 绘制圆形进度条

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. canvas 绘制环形进度条

    结果: 代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="U ...

  4. html5 canvas绘制环形进度条,环形渐变色仪表图

    html5 canvas绘制环形进度条,环形渐变色仪表图                                             在绘制圆环前,我们需要知道canvas arc() 方 ...

  5. css and canvas实现圆形进度条

    进度条效果:   话不多说,上代码 使用css动画实现,看到一篇博客的启发,稍微修改了下, css实现的原理是用两个半圆一开始隐藏,再分别旋转180度,最后成为一个整圆 半圆效果,一开始右边的半圆在盒 ...

  6. canvas绘制环形进度条

    <!DOCTYPE html> <html > <head> <meta http-equiv="content-type" conten ...

  7. Android 自定义 View 圆形进度条总结

    Android 自定义圆形进度条总结 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 微信公众号:牙锅子 源码:CircleProgress 文中如有纰漏,欢迎大家留言指出. 最近 ...

  8. canvas圆形进度条

    通过定义一个canvas标签, new方法传进ID值,和旋转角度值,即可生成圆形进度条 <!DOCTYPE html> <html lang="en"> & ...

  9. 【Android 应用开发】 自定义 圆形进度条 组件

    转载著名出处 : http://blog.csdn.net/shulianghan/article/details/40351487 代码下载 : -- CSDN 下载地址 : http://down ...

随机推荐

  1. Base64图片与UIImage的相互转化

    http://blog.csdn.net/fudesign2008/article/details/38903085 Base64图片 -> UIImage - (UIImage *) data ...

  2. IOS开发之IOS8.0最新UIAlertController 分类: ios技术 2015-01-20 14:24 144人阅读 评论(1) 收藏

    最近苹果更新的IOS8 对以前进行了很大的修改, 更新的API也让人捉急,据说iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.比如全新的UIPrese ...

  3. Matlab笔记

    提取RGB分量,并显示出来 rgb=imread('mao.jpg'); rgb_r=rgb(:,:,); rgb_g=rgb(:,:,); rgb_b=rgb(:,:,); zero=zeros(, ...

  4. js脚本语言(数组)

    定义:给数据Array(1,3.14,"aa")给长度(Array(5))使用方括号定义[1,3.14,"aa"] 属性:lenght(数据的长度) 方法:pu ...

  5. IOS开发中UIFont字体设置

    我们在开发中很多时候要设置UIlabel,UIbutton,UItextfield的字体,这个时候我们就需要用到UIFont,下面简单介绍一下UIFont的用法,仅供参考. UIFont用于获取和设置 ...

  6. 谈谈线程同步Lock和unLock

    Lock可以使用Condition进行线程之间的调度,它有更好的灵活性,而且在一个对象里面可以有多个Condition(即对象监视器),则线程可以注册在不同的Condition,从而可以 有选择性的调 ...

  7. CSS3 Transitions 你可能不知道的知识点

    如何临时让transition失效 我们给一个element设置了transition效果,但某些特殊情况,我们希望让transition临时失效.我们第一反应就是先移除transition设置,等其 ...

  8. iOS MVVM 前世今生

    MVVM,Model-View-ViewModel,一个从 MVC 模式中进化而来的设计模式,最早于2005年被微软的 WPF 和 Silverlight 的架构师 John Gossman 提出.

  9. systemd学习

    http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html http://www.ruanyifeng.com/blog ...

  10. osgearth earth文件规范-符号参考

    osgearth earth文件规范-符号参考 osgEarth用样式表渲染要素和注记. 本文档列出了可在样式表中使用的所有符号属性.不是每个符号是适用于每种情况:这只是一个主列表. 跳转到符号: • ...