在jQuery中,如果我們想要實現元素的淡入淡出這種漸變效果,有3組方法:
淡入和淡出效果,本質上其實都是通過改變元素的“透明度”(opacity屬性)來實現的。
在jQuery中,我們可以使用fadeIn()方法來實現元素的淡入效果,使用fadeOut()方法來實現元素的淡出效果。fadeIn()和fadeOut()這2個方法都是配合使用的。
語法:
$().fadeIn(speed , callback) $().fadeOut(speed , callback)
說明:
speed為可選參數,表示動畫執行的速度,單位為毫秒,默認為200毫秒。如果speed參數省略,則采用默認速度。
callback為可選參數,表示動畫執行完成之後的回調函數。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript" src="../App_js/jquery-1.12.0.min.js"></script> <script type="text/javascript"> $(function () { $("#btn_out").click(function () { $("img").fadeOut(); }); $("#btn_in").click(function () { $("img").fadeIn(); }); }) </script> </head> <body> <img src="../App_images/lesson/run_jq/jquery.png" alt=""/><br /> <input id="btn_out" type="button" value="淡出" /> <input id="btn_in" type="button" value="淡入" /> </body> </html>
在浏覽器預覽效果如下:
分析:
很多人會發現,淡入淡出效果跟“帶上速度”的顯示隱藏效果幾乎一模一樣!Yes ,you’re right!但是不要被浮華給蒙蔽了雙眼。這2組方法還是略有區別的。
不過這2組方法在動畫顯示與隱藏完成之後,都會設置display:none或者display:block。
這2組方法它們在視覺上也有差別,例如hide()隱藏的效果是從下到上或從右下到左上慢慢折疊縮小,而fadeOut的淡出效果是整體淡化直至消失。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript" src="../App_js/jquery-1.12.0.min.js"></script> <script type="text/javascript"> $(function () { $("#btn_hide").click(function () { $("#img1").hide(500); }); $("#btn_show").click(function () { $("#img1").show(500); }); $("#btn_out").click(function () { $("#img2").fadeOut(); }); $("#btn_in").click(function () { $("#img2").fadeIn(); }); }) </script> </head> <body> <img id="img1" src="../App_images/lesson/run_jq/jquery.png" alt=""/><br /> <input id="btn_hide" type="button" value="隱藏" /> <input id="btn_show" type="button" value="顯示" /><br /> <img id="img2" src="../App_images/lesson/run_jq/jquery.png" alt=""/><br /> <input id="btn_out" type="button" value="淡出" /> <input id="btn_in" type="button" value="淡入" /> </body> </html>
在浏覽器預覽效果如下:
分析:
從這個例子,我們就可以很直觀地認識show()和hide()、fadeIn()和fadeOut()這2組方法的實際動畫效果的不同之處了。
在jQuery中,我們還可以使用fadeToggle()方法通過不透明度變化來切換匹配元素的“顯示狀態”。也就是說,如果元素是顯示狀態,則變成隱藏狀態;如果元素是隱藏狀態,則變成顯示狀態。fadeToggle()方法跟toggle()方法很相似,不過toggle()方法通過改變height、width、opacity來實現動畫的顯示與隱藏,而fadeToggle()只通過opacity來實現動畫的顯示與隱藏。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript" src="../App_js/jquery-1.12.0.min.js"></script> <script type="text/javascript"> $(function () { $("#btn_toggle").click(function () { $("#img1").toggle(500); }); $("#btn_fade").click(function () { $("#img2").fadeToggle(); }); }) </script> </head> <body> <img id="img1" src="../App_images/lesson/run_jq/jquery.png" alt=""/><br /> <input id="btn_toggle" type="button" value="toggle()切換" /><br /> <img id="img2" src="../App_images/lesson/run_jq/jquery.png" alt=""/><br /> <input id="btn_fade" type="button" value="fadeToggle()切換" /> </body> </html>
在浏覽器預覽效果如下:
在jQuery中,fadeIn()和fadeOut()這2種方法都是通過改變元素的透明度來實現淡入淡出的動畫效果。其中在淡入效果中,透明度(opacity)從0.0變化到1.0;在淡出效果中,透明度(opacity)從1.0變化到0.0。
如果我們想要將元素透明度指定到某一個值,則可以使用fadeTo()方法。
語法:
$().fadeTo(speed , opacity , callback)
說明:
speed為可選參數,表示動畫執行的速度,單位為毫秒,默認為500毫秒。如果speed參數省略,則采用默認速度。
opacity為必選參數,表示元素指定的透明度,取值范圍為0.0~1.0。
callback為可選參數,表示動畫執行完成之後的回調函數。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript" src="../App_js/jquery-1.12.0.min.js"></script> <script type="text/javascript"> $(function () { $("img").hover(function () { $(this).fadeTo(200, 0.8); }, function () { $(this).fadeTo(200, 1.0); }) }) </script> </head> <body> <img src="../App_images/lesson/run_jq/jquery.png" alt=""/> </body> </html>
在浏覽器預覽效果如下:
分析:
這裡使用合成事件hover()來定義鼠標移入移出圖片時的顯示效果。當然對於這種顯示效果,我們同樣可以使用CSS來定義。