最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何写一个通用的JavaScript效果库

来源:动视网 责编:小采 时间:2020-11-27 20:36:37
文档

如何写一个通用的JavaScript效果库

如何写一个通用的JavaScript效果库:JavaScript的动态效果最基本的是 动态改变大小,移动位置,改变透明度,改变颜色等等。 而其他一些比较炫的效果无非是对这些最基本效果的组合和运用。 现在网上已经有很多很不错的优秀Javascript库或者效果库,我们是否有必要再造轮子呢? 放眼望去,Yah
推荐度:
导读如何写一个通用的JavaScript效果库:JavaScript的动态效果最基本的是 动态改变大小,移动位置,改变透明度,改变颜色等等。 而其他一些比较炫的效果无非是对这些最基本效果的组合和运用。 现在网上已经有很多很不错的优秀Javascript库或者效果库,我们是否有必要再造轮子呢? 放眼望去,Yah


JavaScript的动态效果最基本的是 动态改变大小,移动位置,改变透明度,改变颜色等等。 而其他一些比较炫的效果无非是对这些最基本效果的组合和运用。

现在网上已经有很多很不错的优秀Javascript库或者效果库,我们是否有必要再造轮子呢? 放眼望去,Yahoo UI, 基于Prototype的scriptaculous, Rico, JQuery, Dojo,还有很多很多。 这些库都带有很不错很优秀的动态效果。我们可以直接使用。 但是对于一些中小型项目来说,只是偶尔用到一两个特效,就没有必要引用整个框架,要知道这些家伙体积都不小哦. prototype.js 50K, scripttaculous的 effects.js也有40-50k dojo,yui 更大。

在大多数情况下我们需要一个小巧独立(300行代码以内),无侵入性的效果库。.即使有现有的轮子, 我们不但要学会怎么使用轮子,更要学会如何亲手造一个轮子。 基于以上原因,我们今天来重写一个灵活的,扩展性强的,小巧的,跨浏览器的动态效果库。

考虑到prototype.js 用户群的广泛性,我的部分代码引用了prototype.js,当然,我说过 ,我们要做一个独立
的效果库,即使在没有prototype.js的情况下,也要让代码正常工作。

先做一些准备工作。下面这些代码是任何效果库中必不可少的,因为它负责一些类似取位置坐标,
设置,获取element的透明度等这些基础工作。

代码如下:
/* 
 这个函数的代码来自 Prototype.js http://prototype.conio.net/ 
 如果页面引用了prototype.js ,则可以删除下面这个函数, 
 当然,即使不删除也没关系,因为作了简单的兼容性判断 
*/ 
(function(){ 
 if (!("Prototype" in window)){ 
 Prototype={emptyFunction:function(){}}; 
 Class ={ 
 create: function(){return function(){this.initialize.apply(this, arguments)}} 
 }; 
 $ = function(element){ 
 return typeof(element)=="string"?document.getElementById(element):element 
 }; 
 $A= function(arrLike){ 
 for(var i=0,ret=[];i<arrLike.length;i++) ret[i]=arrLike[i]; 
 return ret 
 }; 
 Number.prototype.toColorPart =function(){return String("00"+this.toString(16)).slice(-2)}; 
 Function.prototype.bind = function() { 
 var __method = this, args = $A(arguments), object = args.shift(); 
 return function(){return __method.apply(object, args.concat($A(arguments)))} 
 } 
 Position={ 
 cumulativeOffset: function(element) { 
 var valueT = 0, valueL = 0; 
 do { 
 valueT += element.offsetTop || 0; 
 valueL += element.offsetLeft || 0; 
 element = element.offsetParent; 
 } while (element); 
 return [valueL, valueT]; 
 } 
 } 
 } 
})() 
/* 
 1.读取/设置 透明度, 
 2.如果只传了一个参数element,则返回 element的透明度 (0<value<1) 
 3.如果传了两个参数 element和value 则把element的透明度设置为value value范围 0-1 
*/ 
function Opacity(element,value){ 
// by Go_Rush(阿舜) from http://ashun.cnblogs.com/ 
 var ret; 
 if (value===undefined){ //读取 
 if (!/msie/i.test(navigator.userAgent)) 
 if (ret=element.style.opacity) return parseFloat(ret); 
 try{return element.filters.item('alpha').opacity/100}catch(x){return 1.0} 
 }else{ //设置 
 value=Math.min(Math.max(value,0.00001),0.999999) //这句修复一些非ie浏览器opacity不能设置为1的bug 
 if (/msie/i.test(navigator.userAgent)) return element.style.filter="alpha(opacity="+value*100+")" 
 return element.style.opacity=value 
 } 
}

更多相关教程请访问 JavaScript视频教程

文档

如何写一个通用的JavaScript效果库

如何写一个通用的JavaScript效果库:JavaScript的动态效果最基本的是 动态改变大小,移动位置,改变透明度,改变颜色等等。 而其他一些比较炫的效果无非是对这些最基本效果的组合和运用。 现在网上已经有很多很不错的优秀Javascript库或者效果库,我们是否有必要再造轮子呢? 放眼望去,Yah
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top