博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
让你的网页图标(Favicon)变成动感的饼图动画
阅读量:5241 次
发布时间:2019-06-14

本文共 2895 字,大约阅读时间需要 9 分钟。

您可能还喜欢

 

  网页图标(Favicon),就是页面标题前面的那个小图标,一般命名为 favicon.ico,存放在网站的根目录下面。这个功能最早由微软创设,目前主流的浏览器都支持。今天这篇文章教大家如何使用 Piecon 生成动感的网页图标加载动画,效果如下:

 

 

Piecon 基本原理

 

  Piecon 是著名的代码托管平台 Github 上的开源库,能够动态生成饼图(Pie Charts)模式的网页图标,同时可以显示加载的百分比。它的灵感来源于动态控制网页图标的开源库 Tinycon,同样托管在 Github 上面。

  Piecon 的基本原理是利用 HTML5 的 Canvas 标签绘制饼图并导出为图片,核心代码如下:

var drawFavicon = function(percentage) {	var canvas = getCanvas();	var context = canvas.getContext("2d");	var percentage = percentage || 0;	var src = currentFavicon;	var faviconImage = new Image();	faviconImage.onload = function() {		if (context) {			context.clearRect(0, 0, 16, 16);			// Draw shadow			context.beginPath();			context.moveTo(canvas.width / 2, canvas.height / 2);			context.arc(canvas.width / 2, canvas.height / 2, Math.min(canvas.width / 2, canvas.height / 2), 0, Math.PI * 2, false);			context.fillStyle = options.shadow;			context.fill();			// Draw background			context.beginPath();			context.moveTo(canvas.width / 2, canvas.height / 2);			context.arc(canvas.width / 2, canvas.height / 2, Math.min(canvas.width / 2, canvas.height / 2) - 2, 0, Math.PI * 2, false);			context.fillStyle = options.background;			context.fill();			// Draw pie			if (percentage > 0) {				context.beginPath();				context.moveTo(canvas.width / 2, canvas.height / 2);				context.arc(canvas.width / 2, canvas.height / 2, Math.min(canvas.width / 2, canvas.height / 2) - 2, (-0.5) * Math.PI, (-0.5 + 2 * percentage / 100) * Math.PI, false);				context.lineTo(canvas.width / 2, canvas.height / 2);				context.fillStyle = options.color;				context.fill();			}			setFaviconTag(canvas.toDataURL());		}	};	// allow cross origin resource requests if the image is not a data:uri	// as detailed here: https://github.com/mrdoob/three.js/issues/1305	if (!src.match(/^data/)) {		faviconImage.crossOrigin = 'anonymous';	}	faviconImage.src = src;};

  生成URL形式的图片然后设置到 Favicon 的URL上并使用 setInterval 函数周期性更新。所以 Piecon 显示的加载进度效果并不是网页上实际内容的加载进度,只是一种模拟效果。例如我们平常配置网页图标的代码如下:

  使用 Piecon 生成的饼图模式的网页图标是Base64编码的URL字符串,代码如下:

  把 href 中的代码粘贴到浏览器地址栏回车即可看到图片,感兴趣的朋友可以试验一下。

   

Piecon 使用方法

  

  相信大家看了前面的介绍之后,对 Piecon 的基本原理都了解了,那么它的使用方法就更简单了。

  首页需要引入 piecon.js 文件:

  然后设置 piecon 的显示选项,并周期性更新,代码如下:

(function(){	var count = 86;	Piecon.setOptions({		color: '#ff0084', // 饼图颜色		background: '#eee', // 饼图空白部分的颜色		shadow: '#fff', // 饼图外环颜色		fallback: 'force' // true:显示饼图, false:显示百分比, 'force':同时显示饼图和百分比)	});	var i = setInterval(function(){		if (++count > 100) { Piecon.reset(); clearInterval(i); return false; }		Piecon.setProgress(count);	}, 250);})();

  setProgress 方法用于设置百分比,上面代码中我们初始设置百分比为86,也可以设置为0或者其它值:

Piecon.setProgress(12);Piecon.setProgress(25);Piecon.setProgress(50);

   浏览器兼容:因为使用了 HTML5 Canvas 标签,所以在 Chrome 中效果最好,Firefox 和 Opera 饼图会闪烁,Safari 和 IE 只能显示百分比。这个效果完整的代码如下:

  Piecon  

 

     

 

您可能还喜欢

 

 

本文链接:

编译来源:

转载于:https://www.cnblogs.com/lhb25/archive/2012/10/25/dynamic-favicon-with-piecon.html

你可能感兴趣的文章
Java实现二分查找
查看>>
架构图-模型
查看>>
黑马程序员_Java基础枚举类型
查看>>
UIImage 和 iOS 图片压缩UIImage / UIImageVIew
查看>>
django ORM创建数据库方法
查看>>
php7 新特性整理
查看>>
RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
查看>>
口胡:[HNOI2011]数学作业
查看>>
03 线程池
查看>>
手机验证码执行流程
查看>>
设计模式课程 设计模式精讲 2-2 UML类图讲解
查看>>
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>
jquery的contains方法
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
桥接模式-Bridge(Java实现)
查看>>
303. Range Sum Query - Immutable
查看>>
图片加载失败显示默认图片占位符
查看>>
【★】浅谈计算机与随机数
查看>>
解决 sublime text3 运行python文件无法input的问题
查看>>