亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery自定義動畫函數實例詳解(附demo源碼)

2019-11-20 11:02:24
字體:
來源:轉載
供稿:網友

本文實例講述了jQuery自定義動畫函數完整實現技巧。分享給大家供大家參考,具體如下:

運行效果截圖如下:

在線演示地址如下:

http://demo.VeVB.COm/js/2015/jquery-zdy-dh-move-style-demo/

具體代碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>自定義動畫DEMO</title><script src="jquery-1.4.4.js"></script><script src="jquery.easing.1.3.js"></script><script>var Tween = { Linear:function (start,alter,curTime,dur) {return start+curTime/dur*alter;},//最簡單的線性變化,即勻速運動 Quad:{//二次方緩動 easeIn:function (start,alter,curTime,dur) {  return start+Math.pow(curTime/dur,2)*alter; }, easeOut:function (start,alter,curTime,dur) {  var progress =curTime/dur;  return start-(Math.pow(progress,2)-2*progress)*alter; }, easeInOut:function (start,alter,curTime,dur) {  var progress =curTime/dur*2;  return (progress<1?Math.pow(progress,2):-((--progress)*(progress-2) - 1))*alter/2+start; } }, Cubic:{//三次方緩動 easeIn:function (start,alter,curTime,dur) {  return start+Math.pow(curTime/dur,3)*alter; }, easeOut:function (start,alter,curTime,dur) {  var progress =curTime/dur;  return start-(Math.pow(progress,3)-Math.pow(progress,2)+1)*alter; }, easeInOut:function (start,alter,curTime,dur) {  var progress =curTime/dur*2;  return (progress<1?Math.pow(progress,3):((progress-=2)*Math.pow(progress,2) + 2))*alter/2+start; } }, Quart:{//四次方緩動 easeIn:function (start,alter,curTime,dur) {  return start+Math.pow(curTime/dur,4)*alter; }, easeOut:function (start,alter,curTime,dur) {  var progress =curTime/dur;  return start-(Math.pow(progress,4)-Math.pow(progress,3)-1)*alter; }, easeInOut:function (start,alter,curTime,dur) {  var progress =curTime/dur*2;  return (progress<1?Math.pow(progress,4):-((progress-=2)*Math.pow(progress,3) - 2))*alter/2+start; } }, Quint:{//五次方緩動 easeIn:function (start,alter,curTime,dur) {  return start+Math.pow(curTime/dur,5)*alter; }, easeOut:function (start,alter,curTime,dur) {  var progress =curTime/dur;  return start-(Math.pow(progress,5)-Math.pow(progress,4)+1)*alter; }, easeInOut:function (start,alter,curTime,dur) {  var progress =curTime/dur*2;  return (progress<1?Math.pow(progress,5):((progress-=2)*Math.pow(progress,4) +2))*alter/2+start; } }, Sine :{//正弦曲線緩動 easeIn:function (start,alter,curTime,dur) {  return start-(Math.cos(curTime/dur*Math.PI/2)-1)*alter; }, easeOut:function (start,alter,curTime,dur) {  return start+Math.sin(curTime/dur*Math.PI/2)*alter; }, easeInOut:function (start,alter,curTime,dur) {  return start-(Math.cos(curTime/dur*Math.PI/2)-1)*alter/2; } }, Expo: {//指數曲線緩動 easeIn:function (start,alter,curTime,dur) {  return curTime?(start+alter*Math.pow(2,10*(curTime/dur-1))):start; }, easeOut:function (start,alter,curTime,dur) {  return (curTime==dur)?(start+alter):(start-(Math.pow(2,-10*curTime/dur)+1)*alter); }, easeInOut:function (start,alter,curTime,dur) {  if (!curTime) {return start;}  if (curTime==dur) {return start+alter;}  var progress =curTime/dur*2;  if (progress < 1) {  return alter/2*Math.pow(2,10* (progress-1))+start;  } else {  return alter/2* (-Math.pow(2, -10*--progress) + 2) +start;  } } }, Circ :{//圓形曲線緩動 easeIn:function (start,alter,curTime,dur) {  return start-alter*Math.sqrt(-Math.pow(curTime/dur,2)); }, easeOut:function (start,alter,curTime,dur) {  return start+alter*Math.sqrt(1-Math.pow(curTime/dur-1)); }, easeInOut:function (start,alter,curTime,dur) {  var progress =curTime/dur*2;  return (progress<1?1-Math.sqrt(1-Math.pow(progress,2)):(Math.sqrt(1 - Math.pow(progress-2,2)) + 1))*alter/2+start; } }, Elastic: {//指數衰減的正弦曲線緩動 easeIn:function (start,alter,curTime,dur,extent,cycle) {  if (!curTime) {return start;}  if ((curTime==dur)==1) {return start+alter;}  if (!cycle) {cycle=dur*0.3;}  var s;  if (!extent || extent< Math.abs(alter)) {  extent=alter;  s = cycle/4;  } else {s=cycle/(Math.PI*2)*Math.asin(alter/extent);}  return start-extent*Math.pow(2,10*(curTime/dur-1)) * Math.sin((curTime-dur-s)*(2*Math.PI)/cycle); }, easeOut:function (start,alter,curTime,dur,extent,cycle) {  if (!curTime) {return start;}  if (curTime==dur) {return start+alter;}  if (!cycle) {cycle=dur*0.3;}  var s;  if (!extent || extent< Math.abs(alter)) {  extent=alter;  s =cycle/4;  } else {s=cycle/(Math.PI*2)*Math.asin(alter/extent);}  return start+alter+extent*Math.pow(2,-curTime/dur*10)*Math.sin((curTime-s)*(2*Math.PI)/cycle); }, easeInOut:function (start,alter,curTime,dur,extent,cycle) {  if (!curTime) {return start;}  if (curTime==dur) {return start+alter;}  if (!cycle) {cycle=dur*0.45;}  var s;  if (!extent || extent< Math.abs(alter)) {  extent=alter;  s =cycle/4;  } else {s=cycle/(Math.PI*2)*Math.asin(alter/extent);}  var progress = curTime/dur*2;  if (progress<1) {  return start-0.5*extent*Math.pow(2,10*(progress-=1))*Math.sin( (progress*dur-s)*(2*Math.PI)/cycle);  } else {  return start+alter+0.5*extent*Math.pow(2,-10*(progress-=1)) * Math.sin( (progress*dur-s)*(2*Math.PI)/cycle);  } } }, Back:{ easeIn: function (start,alter,curTime,dur,s){  if (typeof s == "undefined") {s = 1.70158;}  return start+alter*(curTime/=dur)*curTime*((s+1)*curTime - s); }, easeOut: function (start,alter,curTime,dur,s) {  if (typeof s == "undefined") {s = 1.70158;}  return start+alter*((curTime=curTime/dur-1)*curTime*((s+1)*curTime + s) + 1); }, easeInOut: function (start,alter,curTime,dur,s){  if (typeof s == "undefined") {s = 1.70158;}  if ((curTime/=dur/2) < 1) {  return start+alter/2*(Math.pow(curTime,2)*(((s*=(1.525))+1)*curTime- s));  }  return start+alter/2*((curTime-=2)*curTime*(((s*=(1.525))+1)*curTime+ s)+2); } }, Bounce:{ easeIn: function(start,alter,curTime,dur){  return start+alter-Tween.Bounce.easeOut(0,alter,dur-curTime,dur); }, easeOut: function(start,alter,curTime,dur){  if ((curTime/=dur) < (1/2.75)) {  return alter*(7.5625*Math.pow(curTime,2))+start;  } else if (curTime < (2/2.75)) {  return alter*(7.5625*(curTime-=(1.5/2.75))*curTime + .75)+start;  } else if (curTime< (2.5/2.75)) {  return alter*(7.5625*(curTime-=(2.25/2.75))*curTime + .9375)+start;  } else {  return alter*(7.5625*(curTime-=(2.625/2.75))*curTime + .984375)+start;  } }, easeInOut: function (start,alter,curTime,dur){  if (curTime< dur/2) {  return Tween.Bounce.easeIn(0,alter,curTime*2,dur) *0.5+start;  } else {  return Tween.Bounce.easeOut(0,alter,curTime*2-dur,dur) *0.5 + alter*0.5 +start;  } }, easeOutBounce: function (b, c, t, d) {  if ((t/=d) < (1/2.75)) {  return c*(7.5625*t*t) + b;  } else if (t < (2/2.75)) {  return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;  } else if (t < (2.5/2.75)) {  return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;  } else {  return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;  } } }, //start,alter,curTime,dur easeOutBounce: function (b, c, t, d) { if ((t/=d) < (1/2.75)) {  return c*(7.5625*t*t) + b; } else if (t < (2/2.75)) {  return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; } else if (t < (2.5/2.75)) {  return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; } else {  return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; } }};jQuery(function($){ //兩種動畫方式對比,在w3c瀏覽器中是一致的,在IE中有差異(即使用同算法) $("#start").click(function(){ //自定義動畫函數 animate(Fid("song"), {opacity:0.3, left:400}, 2000, Tween.easeOutBounce); //jq動畫效果 $("#jian").animate( {opacity:0.3, left:400}, 2000, 'easeOutBounce') }) /* 參數說明 o:要動畫的對象 end:元素最終的樣式 dur:動畫持續多長時 fx:效果插件 */ function animate(o ,end, dur, fx) { var curTime=0; var start = {};//元素的初始樣式 var alter = {};//元素的增量樣式 var t=setInterval(function () {  if (curTime>=dur) clearTimeout(t);  for (var i in end) {  if(! (i in start))//注意加括號  {   //不能用 parseInt.有透明度時會出問題   start[i] = parseFloat(getStyle(o, i));  }  if(! (i in alter))  {   alter[i] = end[i] - start[i];  }  var val = fx(start[i],alter[i],curTime,dur);  if(i == 'opacity')  {   /**   o.style.filter, o.style.opacity 火狐下都為空字符串   只能用 o.style.opacity 檢測    注意:ietester下無法測試透明度   */   if(typeof o.style.opacity == "undefined")   {   o.style.filter = "alpha(opacity="+val*100+")";      }else{   o.style[i] = val;   }  }else{   o.style[i] = val+'px';   }  }  curTime+=13; //jquery 中也為 13 },13); } /** 獲取元素樣式 處理透明度、元素浮動樣式的獲取 ,結果帶有單位 */ function getStyle(elem, name) { var nameValue = null; if (document.defaultView) {  var style = document.defaultView.getComputedStyle(elem, null);  nameValue = name in style ? style[name] : style.getPropertyValue(name); } else {  var style = elem.style,  curStyle = elem.currentStyle;  //透明度 from youa  if (name == "opacity") {  if (/alpha/(opacity=(.*)/)/i.test(curStyle.filter)) {   var opacity = parseFloat(RegExp.$1);   return opacity ? opacity / 100 : 0;  }  return 1;  }  if (name == "float") {  name = "styleFloat";  }  var ret = curStyle[name] || curStyle[camelize(name)];  //單位轉換 from jqury  if (!/^-?/d+(?:px)?$/i.test(ret) && /^/-?/d/.test(ret)) {  var left = style.left,  rtStyle = elem.runtimeStyle,  rsLeft = rtStyle.left;  rtStyle.left = curStyle.left;  style.left = ret || 0;  ret = style.pixelLeft + "px";  style.left = left;  rtStyle.left = rsLeft;  }  nameValue = ret; } return nameValue === 'auto' ? '0px' : nameValue; } function camelize(s) {//將CSS屬性名轉換成駝峰式 return s.replace(/-[a-z]/gi,function (c) {  return c.charAt(1).toUpperCase(); }); } function Fid(id) { return document.getElementById(id);  }})</script></head><style>.main{ border:1px solid blue; height:350px;}.pos {position:absolute; left:0px;top:50px; border:5px solid red; background:green;width:100px; height:100px;}</style><body><div class="main"> <div id="song" class="pos" style="display:block;">song</div> <div id="jian" class="pos" style="top:200px;">jian</div></div><button id="start">start</button></body></html>

完整實例代碼點擊此處本站下載。

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国产品国语在线| 91高潮在线观看| 久久天天躁夜夜躁狠狠躁2022| 一本大道久久加勒比香蕉| 亚洲国产日韩欧美在线动漫| 久久天天躁狠狠躁老女人| 日韩天堂在线视频| 亚洲一级免费视频| 亚洲精品国产精品国产自| 性欧美暴力猛交69hd| 欧美孕妇与黑人孕交| 日韩精品中文字幕在线观看| 久久视频在线免费观看| 久久久av亚洲男天堂| 日韩电影中文字幕在线观看| 亚洲男人天天操| 久久久久久中文字幕| 亚洲国产精品久久久久久| 动漫精品一区二区| 亚洲福利精品在线| 亚洲视频一区二区| 色偷偷偷亚洲综合网另类| 影音先锋欧美在线资源| 欧美高清在线视频观看不卡| 国产婷婷色综合av蜜臀av| 日本不卡视频在线播放| 亚洲精品自在久久| 欧美刺激性大交免费视频| 97超碰蝌蚪网人人做人人爽| 91国产视频在线播放| 另类视频在线观看| 成人免费在线网址| 国内精品中文字幕| 欧美裸体xxxxx| 亚洲欧美制服综合另类| 伦伦影院午夜日韩欧美限制| 精品一区二区三区三区| 中文字幕日韩在线视频| 成人97在线观看视频| 亚洲午夜久久久影院| 久久国产精品影片| 国产日韩欧美视频| 国产一级揄自揄精品视频| 亚洲国产精品va在线看黑人| 欧美日韩国产综合视频在线观看中文| 亚洲视频综合网| 欧美精品久久久久久久久久| 国产精品一二三在线| 亚洲国产欧美一区二区三区久久| 69精品小视频| yellow中文字幕久久| 日韩大胆人体377p| 国产精品一区二区久久| 欧美日韩一区二区精品| 国产欧美日韩免费看aⅴ视频| 欧美日韩国产精品| 91国产视频在线| 欧美午夜视频一区二区| 九色精品免费永久在线| 狠狠干狠狠久久| wwwwwwww亚洲| 韩国福利视频一区| 亚洲free性xxxx护士hd| 国产精品自产拍在线观看| 庆余年2免费日韩剧观看大牛| 国产精品中文在线| 欧美精品久久久久a| 欧美丝袜一区二区三区| 久久久久久国产精品| 中文字幕亚洲一区二区三区五十路| 国产精品美乳一区二区免费| 欧美日韩激情美女| 国产91亚洲精品| 日韩a**站在线观看| 日韩精品在线免费| 欧美日韩国产精品专区| 亚洲电影成人av99爱色| 成人精品一区二区三区| 午夜精品理论片| 久久久999精品免费| 亚洲福利精品在线| 亚洲成年人影院在线| 久久国产精品99国产精| 中文在线资源观看视频网站免费不卡| 久久久久久高潮国产精品视| 精品中文字幕久久久久久| 久久精品国产视频| 久久视频免费在线播放| 欧美激情视频在线| 亚洲国产精品久久久久久| 成人字幕网zmw| 欧美激情一级精品国产| 91网在线免费观看| 97色在线视频| 亚洲va欧美va国产综合剧情| 亚洲激情视频网| 日本一区二三区好的精华液| 欧美性猛交xxxx乱大交| 日韩一区视频在线| 国产欧美日韩专区发布| 亚洲成年人在线| 亚洲影院色在线观看免费| 久久国产精品久久久| 久久电影一区二区| 97在线视频一区| 国产日韩欧美电影在线观看| 日本91av在线播放| 国产欧美欧洲在线观看| 欧美激情中文字幕乱码免费| 成人精品视频久久久久| 国产精品福利网站| 久久久久久999| 亚洲精品电影网在线观看| 97视频在线观看成人| 欧美午夜激情视频| 亚洲电影免费观看高清完整版在线| 国产z一区二区三区| 91精品在线影院| 日韩中文字幕在线视频播放| 精品一区二区三区四区在线| 性夜试看影院91社区| 亚洲bt欧美bt日本bt| 这里精品视频免费| 国产精品一区=区| 亚洲精品白浆高清久久久久久| 午夜精品久久久久久久久久久久久| 国产精品99久久久久久久久| 亚洲一区精品电影| 欧美大片在线免费观看| 在线激情影院一区| 亚洲精品中文字幕有码专区| 一本色道久久综合狠狠躁篇的优点| 91av网站在线播放| 日本亚洲欧美成人| 亚洲无限乱码一二三四麻| 亚洲女人天堂av| 日韩精品福利网站| 亚洲色在线视频| 国产精品福利久久久| 精品无人区乱码1区2区3区在线| 国产欧美一区二区三区在线看| 日韩美女激情视频| 性色av一区二区三区在线观看| 98视频在线噜噜噜国产| 久久久久久一区二区三区| 日韩av观看网址| 亚洲乱码av中文一区二区| 日韩一区二区欧美| 91精品国产高清久久久久久久久| 亚洲第一视频在线观看| 日韩性生活视频| 日韩av电影在线免费播放| 亚洲国产天堂网精品网站| 亚洲视频777| 国内外成人免费激情在线视频网站| 国产成人精品免费久久久久| 91精品国产色综合久久不卡98口| 91亚洲精品久久久久久久久久久久| 久久亚洲精品视频| 亚州精品天堂中文字幕| 欧美日韩国产激情| 国产午夜精品久久久| 国产精品视频久久| 国产精品久久久久久久久久新婚|