手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >用js模拟JQuery的show与hide动画函数代码
用js模拟JQuery的show与hide动画函数代码
摘要:复制代码代码如下://根据ID返回dom元素var$=function(id){returndocument.getElementById(...

复制代码 代码如下:

//根据ID返回dom元素

var $ = function(id){return document.getElementById(id);}

//返回dom元素的当前某css值

var getCss = function(obj,name){

//ie

if(obj.currentStyle) {

return obj.currentStyle[name];

}

//ff

else {

var style = document.defaultView.getComputedStyle(obj,null);

return style[name];

}

}

Hide函数:

复制代码 代码如下:

var hide = function(obj,speed,fn){

obj = $(obj);

if (!speed) {

obj.style.display = 'none';

return;

}

else{

speed = speed==='fast'?20:speed==='normal'?30:50;

obj.style.overflow = 'hidden';

}

//获取dom的宽与高

var oWidth = getCss(obj,'width'), oHeight = getCss(obj,'height');

//每次dom的递减数(等比例)

var wcut = 10*(+oWidth.replace('px','') / +oHeight.replace('px','')),hcut = 10;

//处理动画函数

var process = function(width,height){

width = +width-wcut>0?+width-wcut:0;

height = +height-hcut>0?+width-hcut:0;

//判断是否减完了

if(width !== 0 || height !== 0) {

obj.style.width = width+'px';

obj.style.height = height+'px';

setTimeout(function(){process(width,height);},speed);

}

else {

//减完后,设置属性为隐藏以及原本dom的宽与高

obj.style.display = 'none';

obj.style.width = oWidth;

obj.style.height = oHeight;

if(fn)fn.call(obj);

}

}

process(oWidth.replace('px',''),oHeight.replace('px',''));

}

Show函数与Hide函数类似,只是思路相反而已

复制代码 代码如下:

var show = function(obj,speed,fn){

obj = $(obj);

if (!speed) {

obj.style.display = 'block';

return;

}

else{

speed = speed==='fast'?20:speed==='normal'?30:50;

obj.style.overflow = 'hidden';

}

var oWidth = getCss(obj,'width').replace('px',''), oHeight = getCss(obj,'height').replace('px','');

var wadd = 10*(+oWidth / +oHeight),hadd = 10;

obj.style.width = 0+'px';

obj.style.height = 0+'px';

obj.style.display = 'block';

var process = function(width,height){

width = +oWidth-width<wadd?+oWidth:wadd+width;

height = +oHeight-height<hadd?oHeight:hadd+height;

if(width !== +oWidth || height !== +oHeight) {

obj.style.width = width+'px';

obj.style.height = height+'px';

setTimeout(function(){process(width,height);},speed);

}

else {

obj.style.width = oWidth+'px';

obj.style.height = oHeight+'px';

if(fn)fn.call(obj);

}

}

process(0,0);

}

调用方式如:

复制代码 代码如下:

hide('a','normal',function(){

show('a','normal');

});

呃。。。感觉写得好冗余,但不知要如何再优化,希望有高手能写个精简些的。。。

【用js模拟JQuery的show与hide动画函数代码】相关文章:

用javascript动态注释掉HTML代码

JavaScript中的函数嵌套使用

浅谈jQuery构造函数分析

jQuery常用知识点总结以及平时封装常用函数

7个有用的jQuery代码片段分享

一些很实用且必用的小脚本代码第1/5页

jQuery实现div随意拖动的实例代码(通用代码)

javascript中动态函数用法

音乐播放用的的几个函数

js实现异步循环实现代码

精品推荐
分类导航