`
JavaSam
  • 浏览: 951880 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

html5 canvas 画的小图标---持续更新中

 
阅读更多
/**
 * @author wsf
 */
G_LTIE8 = !document.createElement('canvas').getContext;//是否是ie9一下的版本的ie
//利用html5 canvas 画的常用小图标
;(function(win, $) {
	/**
	 * 公共代码
	 */
	function getCommon(canvasId, width, height) {
		var obj = document.getElementById(canvasId);
		if (obj.nodeName.toLowerCase() != "canvas")
			alert("有元素与此canvas元素id冲突!");
		if (obj == null) {
			_obj = $('<canvas id="' + canvasId + '" width="' + width + '" height="' + height + '"></canvas>')
			_obj.appendTo($("body"));
			obj = _obj[0];
		}
		if (G_LTIE8) {
	        obj = G_vmlCanvasManager.initElement(obj);//ie下初始化canvas对象
	    }
		return obj.getContext('2d');
	}
	/**
	 * 绑定事件公共方法
	 */
	function bindEvent(target,events,args){
		for(var name in events){
			target.bind(name,function (){
				events[name](args);
			});
		}
	}
	

	var icons = {};
	icons = $.extend(icons, {
	      loading : {
			showLoading :function (){
				var ctx = getCommon("loading", 100, 100);
				var loadingInterval = null;
				$("#loading").parent().show();
				function _showLoading() {
					var rotatorAngle = Math.PI * 2.5;
					//弧度
					var step = Math.PI / 6;
					loadingInterval = setInterval(function() {//定时器 定时触发函数
						//取得二第效果
						var radius = 20;
						//全的半径
						ctx.clearRect(0, 0, 100, 100);
						//清除页面
						var lineWidth = 3;
						//线的宽度
						ctx.beginPath();
						//开始画图
						ctx.lineWidth = lineWidth;
						//线的宽度
						ctx.strokeStyle = 'blue';
						ctx.fillStyle = "#ccc";
						center = {
							x : 100 / 2,
							y : 100 / 2
						};
						ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);
						ctx.closePath();
						ctx.stroke();
						ctx.beginPath();
						//开始画弧线
						ctx.strokeStyle = '#587dbf';
						//线条的颜色的颜色
						ctx.arc(center.x, center.y, radius, rotatorAngle, rotatorAngle + Math.PI * .45);
						//语法:arc(定义一个中心点,半径,起始角度,结束角度)
						ctx.stroke();
						ctx.fill();
						//绘制
						rotatorAngle += step;
					}, 50/* 这是延迟多少秒做函数*/)
					//*以上是划一个圈
				}
				
				_showLoading();//显示加载中
			},
			/**
			 * 隐藏loading
			 */
			hiddenLoading:function (){
				$("#loading").parent().hide();//
			}
		},
		search : function(events) {
			/**
			 * 开始画搜索按钮
			 */
			var id = "searchBtnCvs";
			var cvs = $("#" + id);
			var ctx = getCommon(id, 30, 30);
			function _drawSearch() {
				ctx.beginPath();
				ctx.arc(15, 15, 10, 0, Math.PI * 2, true);
				ctx.save();
				ctx.moveTo(20, 20);
				//原点
				ctx.lineWidth = 5;
				ctx.lineTo(29, 29);
				ctx.strokeStyle = "#95A3F3";
				ctx.stroke();
				ctx.save();

			}
			bindEvent(cvs,events,ctx);
			_drawSearch();
			//调用
		},
		//向上箭头
		
		arrowUp : function(events) {
			var cvs = $("#arrowUp");
			var ctx = getCommon("arrowUp", 30, 30);
			var _arrowUp = function() {
				//画线
				ctx.beginPath();
				ctx.lineWidth = 5;
				ctx.strokeStyle = '#587dbf';
				//线条颜色
				//坐标源点
				ctx.moveTo(11, 25);
				ctx.lineTo(11, 5);
				ctx.fill();
				//充满整个区域
				ctx.stroke();
				ctx.save();

				ctx.moveTo(12, 3);
				//坐标原点
				ctx.lineTo(3, 15);
				ctx.stroke();
				ctx.save();

				ctx.moveTo(10, 3);
				ctx.lineTo(19, 15);
				ctx.stroke();
				ctx.save();

				ctx.closePath();
			}
			bindEvent(cvs,events,ctx);
			_arrowUp();
		},
		//向下箭头
		arrowDown : function(events,callback) {
			var cvs = $("#arrowDown");
			var ctx = getCommon("arrowDown", 30, 30);
			function _arrowDown() {
				//画线
				ctx.beginPath();
				ctx.lineWidth = 5;
				ctx.strokeStyle = '#587dbf';
				//线条颜色
				//坐标源点
				ctx.moveTo(11, 0);
				ctx.lineTo(11, 25);
				ctx.fill();
				//充满整个区域
				ctx.stroke();
				ctx.save();

				ctx.moveTo(12, 28);
				var _x1 = Math.floor(12 + 4 * Math.sin(45));
				var _y1 = Math.floor(28 + 4 * Math.cos(45));
				//坐标原点
				ctx.lineTo(3, 15);
				ctx.stroke();
				ctx.save();

				ctx.moveTo(12, 28);
				ctx.lineTo(20, 14);
				ctx.stroke();
				ctx.save();

				ctx.closePath();
			}
			bindEvent(cvs,events,ctx);
			_arrowDown();
		},
		//下拉列表图标
		select : function(callback) {
			var id = "selectBtnCvs";
			var cvs = $("#" + id);
			var ctx = getCommon(id, 30, 30);
			function _arrowDefault() {
				//画线
				ctx.beginPath();
				ctx.lineWidth = 3;
				ctx.fillStyle = "#95A3F3";
				//线条颜色
				//坐标源点
				ctx.moveTo(15, 22);
				ctx.lineTo(30, 15);
				ctx.lineTo(15, 7);
				ctx.fill();

			}

			function _arrowDown() {
				//画线
				ctx.beginPath();
				ctx.lineWidth = 3;
				ctx.fillStyle = "#95A3F3";
				//线条颜色
				//坐标源点
				ctx.moveTo(28, 10);
				ctx.lineTo(20, 25);
				ctx.lineTo(12, 10);
				ctx.fill();
				ctx.closePath();
			}

			var _events = {
				"mouseover" : function(e) {
					ctx.clear();
					_arrowDown();
					if (callback)
						callback(true,e);//回调
				},
				"mouseout" : function(e) {
					ctx.clear();
					_arrowDefault();
					if (callback)
						callback(false,e)//回调
				}
			}
			for(var name in _events){
				cvs.bind(name,_events[name]);
			}
			_arrowDefault(callback);
		},
		blankArrow:{
			arrwoDown:function (events){
				var id = "expenddivBtnCvs";
				var cvs = $("#"+id);
				var ctx = getCommon(id, 40, 20);//id,宽,高
				function _init (){
					ctx.beginPath();
					ctx.lineWidth = 1;
					ctx.strokeStyle = "blue";
					ctx.fillStyle= "blue";
					//坐标源点
					ctx.moveTo(3, 3);
					ctx.lineTo(15, 8);
					ctx.lineTo(27, 3);
					ctx.stroke();
					ctx.fill();
					ctx.closePath();
				}
				bindEvent(cvs,events,ctx);
				_init();//自己调用
			},
			arrwoUp:function (events){
				var id = "unexpendBtnCvs";
				var cvs = $("#"+id);
				var ctx = getCommon(id, 40, 20);//id,宽,高
				function _init (){
					ctx.beginPath();
					ctx.lineWidth = 1;
					ctx.strokeStyle = "#95A3F3";
					ctx.fillStyle= "#95A3F3";
					//坐标源点
					ctx.moveTo(3, 8);
					ctx.lineTo(15, 3);
					ctx.lineTo(28, 8);
					ctx.stroke();
					ctx.fill();
					ctx.closePath();
				}
				bindEvent(cvs,events,ctx);
				_init();//自己调用
			}
		},
		/**
		 * 添加按钮
		 * @param events
		 */
		add:function (events){
			
		},
		/**
		 * 修改按钮
		 * @param events
		 */
		modify:function (events){
			
		},
		/**
		 * 删除按钮
		 * @param events
		 */
		Delete:function (events){
			
		}
	});
	$.icons = icons;
})(window, jQuery);

 

0
0
分享到:
评论

相关推荐

    html5+css3齿轮滚动动画代码

    HTML5是超文本标记语言的最新版本,它引入了许多新特性,如语义化标签(如、等)、离线存储(Application Cache)、音频/视频API、Canvas画布和SVG矢量图等。这些特性使得HTML5能够更有效地构建结构化和功能丰富的...

    h5贪吃蛇动画

    5. `img/` - 可能包含游戏中的图片资源,如食物图标、蛇的身体部分等。 在`tcs.js`中,可能包含以下几个关键部分: - 初始化函数:设置游戏区域大小,初始化蛇的位置、速度和长度。 - 移动函数:根据蛇头的方向更新...

    html5 实现动画(二)

    在HTML5中实现动画,我们主要依赖于Canvas、SVG以及Web Animations API等技术。这篇博客“html5 实现动画(二)”可能是对前一篇文章的延续,探讨了更多关于HTML5动画实现的细节和技巧。 首先,Canvas是HTML5中一个...

    html5animation

    1. **Canvas**:Canvas是HTML5中的一个画布元素,通过JavaScript来绘制图形。开发者可以使用Canvas API进行动态绘图,创建出复杂的2D动画。例如,通过clearRect()方法擦除之前的图形,然后重新绘制新的图形,就能...

    HTML5和CSS3详细总结

    HTML5和CSS3支持自定义Web字体和图标,这极大地扩展了网页的设计范围。 ##### 5.1 Web字体 通过使用`@font-face`规则,可以将特定的字体文件加载到网页中,从而使网页能够使用这些字体显示文本。 ##### 5.2 字体...

    HTML变形和动画.zip

    在HTML5中,CSS3(层叠样式表第三版)起着至关重要的作用,它引入了新的选择器、布局模式和动画功能。在"旋转太极"这个例子中,我们可能看到的是一个太极图标的动态旋转效果。CSS3的`transform`属性被用来改变元素的...

    几何图形动画HTML5特效.zip

    在本项目中,"几何图形动画HTML5特效.zip"是一个包含有用资源的压缩包,它聚焦于使用HTML5、CSS3以及可能的JavaScript库(如jQuery)来创建动态的几何图形动画效果。这个项目旨在为网页设计师和开发者提供一套实用且...

    快速开发html5移动应用页面.zip

    HTML5是超文本标记语言的最新版本,增加了许多新特性,如离线存储(离线缓存)、拖放功能、媒体元素(音频和视频)、画布(Canvas)以及SVG矢量图形等,这些都极大地增强了网页的交互性和功能性。在移动应用开发中,...

    html5实战开发教程.rar

    在HTML5中,一些关键知识点包括: 1. **语义化元素**:HTML5引入了诸如、、、和等语义化元素,使得网页结构更加清晰,有利于搜索引擎优化(SEO)和无障碍访问。 2. **Canvas绘图**:HTML5的&lt;canvas&gt;元素提供了一个...

    微信HTML5在线朋友圈游戏源码带安装部署教程-炸屎奇遇记.zip

    7. 更新维护:发布后,根据用户反馈进行持续优化和更新,以提升用户体验。 四、《炸屎奇遇记》游戏实例分析 《炸屎奇遇记》作为一款HTML5小游戏,可能包含了简单的物理引擎、动画效果、得分系统和社交分享功能。...

    html5圆形进度条加载按钮.zip

    HTML5、CSS、JavaScript、jQuery 是前端开发中的核心技术,它们共同构建了丰富的用户体验。在这个案例中,"html5圆形进度条加载按钮.zip" 文件包含了一个使用这些技术实现的交互式元素,即一个圆形的进度条加载按钮...

    从入门到精通HTML5——PDF——网盘链接

     第15章 HTML 5中的文件与拖放 280  视频讲解:40分钟  15.1 选择文件 281  15.1.1 通过file对象选择文件 281  15.1.2 使用blob接口获取文件的类型与大小 282  15.1.3 通过类型过滤选择的文件 283  15.2 ...

    HTML5 CSS3 动态记事本示例

    在这个记事本示例中,HTML5可能使用了`&lt;canvas&gt;`元素来绘制记事本的界面,或者利用`&lt;input type="text"&gt;`创建可编辑的文本区域,让用户可以输入和保存笔记。此外,`&lt;section&gt;`、`&lt;article&gt;`等语义化标签也可能被用来...

    多款SVG扁平风格图标动画特效.zip

    SVG图标通常更小的文件大小,加载速度更快,同时也支持交互性和动画效果。 在前端开发中,HTML5是现代网页的标准标记语言,它可以与SVG很好地集成。通过在HTML中直接嵌入SVG代码或使用`&lt;img&gt;`、`&lt;object&gt;`或`&lt;svg&gt;`...

    H5小游戏源码 飞翔吧!小帅.zip

    - **游戏循环机制**:游戏的更新和渲染通常在一个持续的循环中进行,确保游戏流畅运行。 - **对象实例化**:如何创建和管理游戏中的各种对象,如角色、敌人、道具等。 - **数据结构和算法**:如何有效地存储和操作...

    html5 客户端源码

    在HTML5中,开发者可以利用一系列新特性来提升用户体验,如: 1. **离线存储**(Offline Storage):通过`AppCache`和`IndexedDB`,HTML5允许网页在用户离线时也能访问部分数据,提高了应用的可用性。 2. **表单...

    使用HTML5和CSS3构建基于webkit的Web-PageApp.doc

    在当前的移动互联网时代,HTML5和CSS3已经成为构建基于WebKit的Web Page/App的重要技术。WebKit是一种开源的渲染引擎,广泛应用于iOS和Android等智能设备的浏览器,使得开发者能够创建高度交互、功能丰富的Web应用...

    css3 html5 页面过渡集合源码下载

    【CSS3与HTML5页面过渡】是现代网页设计中不可或缺的一部分,它们为用户带来了更为丰富、动态和交互式的体验。CSS3(层叠样式表第三版)和HTML5(超文本标记语言第五版)的结合,让网页的视觉效果和用户体验达到了新...

    html5 svg玫瑰花盛开动画特效.zip

    例如,`&lt;canvas&gt;`元素提供了在浏览器中进行动态图形绘制的能力,而`&lt;svg&gt;`元素则允许插入矢量图形,这些图形在放大时不会失真,非常适合创建复杂的图形和图标。 SVG是一种基于XML的矢量图像格式,它可以被用来描绘...

    KODExplorer 芒果云-资源管理器

    解决canvas问题 - 文件编辑器,载入loading去掉 - 删除错误时,或上传错误时也刷新目录。删除提示颜色错误 - 对话框右键 点击右键菜单隐藏修复 - 手机端 touch =双击 - 文件列表 explorer 右键 不清除选才· - ...

Global site tag (gtag.js) - Google Analytics