国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

用js模擬JQuery的show與hide動(dòng)畫函數(shù)代碼

2019-11-21 00:13:37
字體:
供稿:網(wǎng)友
復(fù)制代碼 代碼如下:

//根據(jù)ID返回dom元素
var $ = function(id){return document.getElementById(id);}
//返回dom元素的當(dāng)前某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函數(shù):

復(fù)制代碼 代碼如下:

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的遞減數(shù)(等比例)
var wcut = 10*(+oWidth.replace('px','') / +oHeight.replace('px','')),hcut = 10;
//處理動(dòng)畫函數(shù)
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 {
//減完后,設(shè)置屬性為隱藏以及原本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函數(shù)與Hide函數(shù)類似,只是思路相反而已

復(fù)制代碼 代碼如下:

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);
}


調(diào)用方式如:

復(fù)制代碼 代碼如下:

hide('a','normal',function(){
show('a','normal');
});


呃。。。感覺寫得好冗余,但不知要如何再優(yōu)化,希望有高手能寫個(gè)精簡(jiǎn)些的。。。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南阳市| 工布江达县| 龙南县| 荥经县| 柏乡县| 屯门区| 德保县| 潜江市| 固阳县| 太康县| 梧州市| 乐至县| 乐业县| 黔东| 化隆| 肃南| 聂荣县| 巧家县| 井陉县| 唐河县| 河津市| 山东| 凭祥市| 星子县| 女性| 佛坪县| 墨脱县| 上虞市| 潢川县| 无极县| 县级市| 毕节市| 西乡县| 资源县| 江北区| 吕梁市| 五家渠市| 湟源县| 祁阳县| 静宁县| 遂宁市|