用JavaScript實作動畫,原理非常簡單:我們只需要以固定的時間間隔(例如,0.1秒),每次把DOM元素的CSS樣式修改一點(例如,高寬各增加10%),看起來就像動畫了。
但要用JavaScript手動實作動畫效果,就需要寫非常複雜的程式碼。如果想要把動畫效果用函數封裝起來便於復用,那考慮的事情就更多了。本文主要和大家分享jQuery內建的幾種動畫樣式。
使用jQuery實作動畫,程式碼已經簡單得不能再簡化了:只需要一行程式碼!
讓我們先來看看jQuery內建的幾種動畫樣式:
show / hide
#直接以無參數形式呼叫show()和hide( ),會顯示和隱藏DOM元素。但是,只要傳遞一個時間參數進去,就變成了動畫:
var p = $('#test-show-hide'); p.hide(3000); // 在3秒钟内逐渐消失
時間以毫秒為單位,但也可以是'slow','fast'這些字串:
var p = $('#test-show-hide'); p.show('slow'); // 在0.6秒钟内逐渐显示
toggle()方法則依照目前狀態決定是show()還是hide()。
slideUp / slideDown
你可能已經看出來了,show()和hide()是從左上角逐漸展開或收縮的,而slideUp()和slideDown()則是在垂直方向逐漸展開或縮小的。
slideUp()把一個可見的DOM元素收起來,效果跟拉上窗簾似的,slideDown()相反,而slideToggle()則根據元素是否可見來決定下一步動作:
var p = $('#test-slide'); p.slideUp(3000); // 在3秒钟内逐渐向上消失
fadeIn / fadeOut
fadeIn()和fadeOut()的動畫效果是淡入淡出,也就是透過不斷設定DOM元素的opacity屬性來實現,而fadeToggle()則根據元素是否可見來決定下一步動作:
var p = $('#test-fade'); p.fadeOut('slow'); // 在0.6秒内淡出
自訂動畫
如果上述動畫效果還不能滿足你的要求,那就祭獻最後大招:animate(),它可以實現任意動畫效果,我們需要傳入的參數就是DOM元素最終的CSS狀態和時間,jQuery在時間段內不斷調整CSS直到達到我們設定的值:
var p = $('#test-animate'); p.animate({ opacity: 0.25, width: '256px', height: '256px' }, 3000); // 在3秒钟内CSS过渡到设定值
animate()還可以再傳入一個函數,當動畫結束時,該函數將被呼叫:
var p = $('#test-animate'); p.animate({ opacity: 0.25, width: '256px', height: '256px' }, 3000, function () { console.log('动画已结束'); // 恢复至初始状态: $(this).css('opacity', '1.0').css('width', '128px').css('height', '128px'); });
實際上這個回呼函數參數對於基本動畫也是適用的。
有了animate(),你就可以實現各種自訂動畫效果了:
animate()
序列動畫
jQuery的動畫效果還可以串列執行,透過delay()方法還可以實現暫停,這樣,我們可以實現更複雜的動畫效果,而程式碼卻相當簡單:
var p = $('#test-animates'); // 动画效果:slideDown - 暂停 - 放大 - 暂停 - 缩小 p.slideDown(2000) .delay(1000) .animate({ width: '256px', height: '256px' }, 2000) .delay(1000) .animate({ width: '128px', height: '128px' }, 2000); }
因為動畫需要執行一段時間,所以jQuery必須不斷傳回新的Promise物件才能後續執行操作。簡單地把動畫封裝在函數中是不夠的。
為什麼有的動畫沒有效果
你可能會遇到,有的動畫如slideUp()根本沒有效果。這是因為jQuery動畫的原理是逐漸改變CSS的值,如height從100px逐漸變成0。但是很多不是block性質的DOM元素,對它們設定height根本不起作用,所以動畫也就沒有效果。
此外,jQuery也沒有實現對background-color的動畫效果,用animate()設定background-color也沒有效果。這種情況下可以使用CSS3的transition來實現動畫效果。
相關推薦:
#以上是jQuery內建的幾種動畫樣式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

实现方法:1、用“$("img").delay(毫秒数).fadeOut()”语句,delay()设置延迟秒数;2、用“setTimeout(function(){ $("img").hide(); },毫秒值);”语句,通过定时器来延迟。

区别:1、axios是一个异步请求框架,用于封装底层的XMLHttpRequest,而jquery是一个JavaScript库,只是顺便封装了dom操作;2、axios是基于承诺对象的,可以用承诺对象中的方法,而jquery不基于承诺对象。

修改方法:1、用css()设置新样式,语法“$(元素).css("min-height","新值")”;2、用attr(),通过设置style属性来添加新样式,语法“$(元素).attr("style","min-height:新值")”。

增加元素的方法:1、用append(),语法“$("body").append(新元素)”,可向body内部的末尾处增加元素;2、用prepend(),语法“$("body").prepend(新元素)”,可向body内部的开始处增加元素。

在jquery中,apply()方法用于改变this指向,使用另一个对象替换当前对象,是应用某一对象的一个方法,语法为“apply(thisobj,[argarray])”;参数argarray表示的是以数组的形式进行传递。

删除方法:1、用empty(),语法“$("div").empty();”,可删除所有子节点和内容;2、用children()和remove(),语法“$("div").children().remove();”,只删除子元素,不删除内容。

on()方法有4个参数:1、第一个参数不可省略,规定要从被选元素添加的一个或多个事件或命名空间;2、第二个参数可省略,规定元素的事件处理程序;3、第三个参数可省略,规定传递到函数的额外数据;4、第四个参数可省略,规定当事件发生时运行的函数。

去掉方法:1、用“$(selector).removeAttr("readonly")”语句删除readonly属性;2、用“$(selector).attr("readonly",false)”将readonly属性的值设置为false。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版