首页 > 代码库 > 简单动画实现代码
简单动画实现代码
动画的实现原型
<div id="div1" style="width:100px;height:50px;background:red;cursor:pointer;color:#fff;text-align:center;line-height:50px;">点击</div><script type="text/javascript">//domvar oDiv = document.getElementById(‘div1‘);//调用oDiv.onclick = function() { $(‘#div1‘).run({ ‘width‘: ‘500‘ }).run({ ‘width‘: ‘300‘ }).run({ ‘width‘: ‘1000‘ });};</script>
JS
(function($) { window.$ = $;})(function() { var rquickExpr = /^(?:#([\w-]*))$/; function aQuery(selector) { return new aQuery.fn.init(selector); } /** * 动画 * @return {[type]} [description] */ var animation = function(){ var self = {}; var Queue = []; //动画队列 var fireing = false //动画锁 var first = true;//通过add接口触发 var getStyle = function(obj, attr) { return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, false)[attr]; } var makeAnim = function(element, options, func) { var width = options.width //包装了具体的执行算法 //css3 //setTimeout element.style.webkitTransitionDuration = ‘2000ms‘; element.style.webkitTransform = ‘translate3d(‘ + width + ‘px,0,0)‘; //监听动画完结 element.addEventListener(‘webkitTransitionEnd‘, function() { func() }); } var _fire = function() { //加入动画正在触发 if (!fireing) { var onceRun = Queue.shift(); if (onceRun) { fireing = true; //next onceRun(function() { fireing = false; _fire(); }); } else { fireing = true; } } } return self = { //增加队列 add: function(element,options) { Queue.push(function(func) { makeAnim(element, options, func); }); //如果有一个队列立刻触发动画 if(first && Queue.length ){ first = false; self.fire(); } }, //触发 fire: function() { _fire(); } } }(); aQuery.fn = aQuery.prototype = { run:function(options){ animation.add(this.element,options); return this; } } var init = aQuery.fn.init = function(selector) { var match = rquickExpr.exec(selector); var element = document.getElementById(match[1]) this.element = element; return this; } init.prototype = aQuery.fn; return aQuery;}());
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。