canvas绘制圆形进度条(或显示当前已浏览网页百分比)
使用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绘制圆形进度条(或显示当前已浏览网页百分比)的更多相关文章
- HTML5效果:Canvas 实现圆形进度条并显示数字百分比
实现效果 1.首先创建html代码 <canvas id="canvas" width="500" height="500" styl ...
- canvas 绘制圆形进度条
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- canvas 绘制环形进度条
结果: 代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="U ...
- html5 canvas绘制环形进度条,环形渐变色仪表图
html5 canvas绘制环形进度条,环形渐变色仪表图 在绘制圆环前,我们需要知道canvas arc() 方 ...
- css and canvas实现圆形进度条
进度条效果: 话不多说,上代码 使用css动画实现,看到一篇博客的启发,稍微修改了下, css实现的原理是用两个半圆一开始隐藏,再分别旋转180度,最后成为一个整圆 半圆效果,一开始右边的半圆在盒 ...
- canvas绘制环形进度条
<!DOCTYPE html> <html > <head> <meta http-equiv="content-type" conten ...
- Android 自定义 View 圆形进度条总结
Android 自定义圆形进度条总结 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 微信公众号:牙锅子 源码:CircleProgress 文中如有纰漏,欢迎大家留言指出. 最近 ...
- canvas圆形进度条
通过定义一个canvas标签, new方法传进ID值,和旋转角度值,即可生成圆形进度条 <!DOCTYPE html> <html lang="en"> & ...
- 【Android 应用开发】 自定义 圆形进度条 组件
转载著名出处 : http://blog.csdn.net/shulianghan/article/details/40351487 代码下载 : -- CSDN 下载地址 : http://down ...
随机推荐
- Base64图片与UIImage的相互转化
http://blog.csdn.net/fudesign2008/article/details/38903085 Base64图片 -> UIImage - (UIImage *) data ...
- IOS开发之IOS8.0最新UIAlertController 分类: ios技术 2015-01-20 14:24 144人阅读 评论(1) 收藏
最近苹果更新的IOS8 对以前进行了很大的修改, 更新的API也让人捉急,据说iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.比如全新的UIPrese ...
- Matlab笔记
提取RGB分量,并显示出来 rgb=imread('mao.jpg'); rgb_r=rgb(:,:,); rgb_g=rgb(:,:,); rgb_b=rgb(:,:,); zero=zeros(, ...
- js脚本语言(数组)
定义:给数据Array(1,3.14,"aa")给长度(Array(5))使用方括号定义[1,3.14,"aa"] 属性:lenght(数据的长度) 方法:pu ...
- IOS开发中UIFont字体设置
我们在开发中很多时候要设置UIlabel,UIbutton,UItextfield的字体,这个时候我们就需要用到UIFont,下面简单介绍一下UIFont的用法,仅供参考. UIFont用于获取和设置 ...
- 谈谈线程同步Lock和unLock
Lock可以使用Condition进行线程之间的调度,它有更好的灵活性,而且在一个对象里面可以有多个Condition(即对象监视器),则线程可以注册在不同的Condition,从而可以 有选择性的调 ...
- CSS3 Transitions 你可能不知道的知识点
如何临时让transition失效 我们给一个element设置了transition效果,但某些特殊情况,我们希望让transition临时失效.我们第一反应就是先移除transition设置,等其 ...
- iOS MVVM 前世今生
MVVM,Model-View-ViewModel,一个从 MVC 模式中进化而来的设计模式,最早于2005年被微软的 WPF 和 Silverlight 的架构师 John Gossman 提出.
- systemd学习
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html http://www.ruanyifeng.com/blog ...
- osgearth earth文件规范-符号参考
osgearth earth文件规范-符号参考 osgEarth用样式表渲染要素和注记. 本文档列出了可在样式表中使用的所有符号属性.不是每个符号是适用于每种情况:这只是一个主列表. 跳转到符号: • ...