× 目錄 [1]顯隱效果 [2]高度變化 [3]淡入淡出 前面的話 動畫效果是jQuery吸引人的地方。通過jQuery的動畫方法,能夠輕鬆地為網頁添加視覺效果,給用戶一種全新的體驗。jQuery動畫是一個大的系列,本文將詳細介紹jQuery的三種常見動畫效果——顯隱效果、高度變化及淡入淡出 顯隱 ...
×
目錄
[1]顯隱效果 [2]高度變化 [3]淡入淡出前面的話
動畫效果是jQuery吸引人的地方。通過jQuery的動畫方法,能夠輕鬆地為網頁添加視覺效果,給用戶一種全新的體驗。jQuery動畫是一個大的系列,本文將詳細介紹jQuery的三種常見動畫效果——顯隱效果、高度變化及淡入淡出
顯隱
在CSS中,總結過實現元素顯隱的9種思路。而jQuery中的show()和hide()方法是通過改變display屬性來實現元素顯隱效果,它們是jQuery中最基本的動畫方法
【hide()】
hide()方法是隱藏元素的最簡單方法。如果沒有參數,匹配的元素將被立即隱藏,沒有動畫。這大致相當於調用.css('display', 'none')
display屬性值保存在jQuery的數據緩存中,所以display可以方便以後可以恢復到其初始值。如果一個元素的display屬性值為inline,那麼隱藏再顯示時,這個元素將再次顯示inline
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <button id="box">按鈕</button> <script> $('#box').click(function(event){ $(this).hide(); }); </script>
hide([duration])
當提供一個持續時間參數,hide()就變成了一個動畫方法。hide()方法將為匹配元素的寬度、高度及不透明度同時執行動畫。一旦透明度達到0,display樣式屬性將被設置為none,這個元素將不再在頁面中影響佈局
持續時間是以毫秒為單位的,數值越大,動畫越慢。預設值為'normal',代碼400毫秒的延時;'fast'和'slow'分別代表200和600毫秒的延時
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <style> li{text-decoration: underline; margin-top: 2px;} </style> <ul id="con" style="display:inline-block;width:100px;cursor:pointer;margin:0;padding: 0;list-style:none;"> <li>fast</li> <li>normal</li> <li>slow</li> <li>100</li> <li>1000</li> </ul> <button id="reset">恢復</button> <div id="box" style="display:inline-block;height: 100px;width: 300px;background-color: lightblue"></div> <script> $('#reset').click(function(){ $('#box').show(); }) $('#con li').click(function(){ $('#box').hide($(this).html()) }) </script>
hide([duration][,easing])
hide()方法可以接受一個可選參數easing,表示過渡使用哪種緩動函數。jQuery自身提供"linear"和"swing",其他可以使用相關的插件,其中預設值為swing
linear表示勻速直線運動,而swing則表示變速運動,如下圖所示
linear
swing
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <style> li{text-decoration: underline; margin-top: 2px;} </style> <ul id="con" style="display:inline-block;width:100px;cursor:pointer;margin:0;padding: 0;list-style:none;"> <li>swing</li> <li>linear</li> </ul> <button id="reset">恢復</button> <div id="box" style="display:inline-block;height: 100px;width: 300px;background-color: lightblue"></div> <script> $('#reset').click(function(){ $('#box').show(); }) $('#con li').click(function(){ $('#box').hide(2000,$(this).html()) }) </script>
hide([duration][,easing][,callback])
hide()方法可以接受第三個參數,該參數也是可選參數,該參數是回調函數,表示動畫完成時執行的函數
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <button id="box">按鈕</button> <script> $('#box').click(function(event){ $(this).hide(1000,function(){ alert('動畫完成');
$(this).show(); }); }); </script>
【show()】
show()方法用於顯示元素,與hide()方法用途正好相反,但用法相似
[註意]如果選擇的元素是可見的,這個方法將不會改變任何東西
如果沒有參數,匹配的元素將被立即顯示,沒有動畫
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <button id="btn">按鈕</button> <div id="test" style="height: 30px;width: 100px;background:lightblue;display:none;"></div> <script> $('#btn').click(function(event){ $('#test').show(); }); </script>
show([duration])
與hide()方法類似,當提供一個持續時間參數,show()就變成了一個動畫方法。show()方法將為匹配元素的寬度、高度及不透明度同時執行動畫
持續時間是以毫秒為單位的,數值越大,動畫越慢。預設值為'normal',代碼400毫秒的延時;'fast'和'slow'分別代表200和600毫秒的延時
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <style> li{text-decoration: underline; margin-top: 2px;} </style> <ul id="con" style="display:inline-block;width:100px;cursor:pointer;margin:0;padding: 0;list-style:none;"> <li>fast</li> <li>normal</li> <li>slow</li> <li>100</li> <li>1000</li> </ul> <button id="reset">恢復</button> <div id="box" style="display:inline-block;height: 100px;width: 300px;background-color: lightblue"></div> <script> $('#box').hide(); $('#reset').click(function(){ $('#box').hide(); }) $('#con li').click(function(){ $('#box').show($(this).html()) }) </script>
show([duration][,easing])
show()方法可以接受一個可選參數easing,表示過渡使用哪種緩動函數。jQuery自身提供"linear"和"swing",預設值為swing
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <style> li{text-decoration: underline; margin-top: 2px;} </style> <ul id="con" style="display:inline-block;width:100px;cursor:pointer;margin:0;padding: 0;list-style:none;"> <li>swing</li> <li>linear</li> </ul> <button id="reset">恢復</button> <div id="box" style="display:inline-block;height: 100px;width: 300px;background-color: lightblue"></div> <script> $('#box').hide(); $('#reset').click(function(){ $('#box').hide(); }) $('#con li').click(function(){ $('#box').show(2000,$(this).html()) }) </script>
show([duration][,easing][,callback])
show()方法可以接受第三個參數,該參數也是可選參數,該參數是回調函數,表示動畫完成時執行的函數
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <button id="btn">按鈕</button> <div id="box" style="display:none;height: 100px;width: 300px;background-color: lightblue"></div> <script> $('#btn').click(function(event){ $('#box').show(1000,function(){ alert('動畫完成') }); }); </script>
【toggle()】
show()與hide()是一對互斥的方法。需要對元素進行顯示隱藏的互斥切換,通常情況是需要先判斷元素的display狀態,然後調用其對應的處理方法。比如顯示的元素,那麼就要調用hide,反之亦然。 對於這樣的操作行為,jQuery提供了一個便捷方法toggle()用於切換顯示或隱藏匹配元素
如果沒有參數,toggle()方法是最簡單的方法來切換一個元素可見性
通過改變CSS的display屬性,匹配的元素將被立即顯示或隱藏,沒有動畫。如果元素是最初顯示,它會被隱藏,如果隱藏的,它會顯示出來。display屬性將被儲存並且需要的時候可以恢復。如果一個元素的display值為inline,然後是隱藏和顯示,這個元素將再次顯示inline
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <button id="btn">按鈕</button> <div id="box" style="height: 100px;width: 300px;background-color: lightblue"></div> <script> $('#btn').click(function(event){ $('#box').toggle(); }); </script>
toggle([duration])
當提供一個持續時間參數,toggle()成為一個動畫方法。toggle()方法將為匹配元素的寬度、高度及不透明度,同時進行動畫。當一個隱藏動畫後,高度值達到0的時候,display樣式屬性被設置為none,以確保該元素不再影響頁面佈局
持續時間是以毫秒為單位的,數值越大,動畫越慢。預設值為'normal',代碼400毫秒的延時;'fast'和'slow'分別代表200和600毫秒的延時
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <style> li{text-decoration: underline; margin-top: 2px;} </style> <ul id="con" style="display:inline-block;width:100px;cursor:pointer;margin:0;padding: 0;list-style:none;"> <li>fast</li> <li>normal</li> <li>slow</li> <li>100</li> <li>1000</li> </ul> <div id="box" style="display:inline-block;height: 100px;width: 300px;background-color: lightblue"></div> <script> $('#con li').click(function(){ $('#box').toggle($(this).html()) }) </script>
toggle([duration][,easing])
toggle()方法可以接受一個可選參數easing,表示過渡使用哪種緩動函數。jQuery自身提供"linear"和"swing",預設值為swing
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <style> li{text-decoration: underline; margin-top: 2px;} </style> <ul id="con" style="display:inline-block;width:100px;cursor:pointer;margin:0;padding: 0;list-style:none;"> <li>swing</li> <li>linear</li> </ul> <div id="box" style="display:inline-block;height: 100px;width: 300px;background-color: lightblue"></div> <script> $('#con li').click(function(){ $('#box').toggle(2000,$(this).html()) }) </script>
toggle([duration][,easing][,callback])
toggle()方法可以接受第三個參數,該參數也是可選參數,表示回調函數,即動畫完成時執行的函數
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <button id="btn">按鈕</button> <div id="box" style="display:none;height: 100px;width: 300px;background-color: lightblue"></div> <script> $('#btn').click(function(event){ $('#box').toggle(1000,function(){ alert('動畫完成') }); }); </script>
高度變化
使用show()/hide()實現動畫效果時,寬度、高度及透明度會同時變化。若只想讓高度發生變化,則需要使用slideUp()方法和slideDown()方法
【slideUp()】
slideUp()方法將元素由下到上縮短隱藏
[註意]沒有參數時,持續時間預設為400毫秒
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <button id="btn">按鈕</button> <div id="box" style="height: 100px;width: 300px;background-color: lightblue"></div> <script> $('#btn').click(function(event){ $('#box').slideUp(); }); </script>
slideUp([duration])
slideUp()方法可以接受一個持續時間參數
持續時間是以毫秒為單位的,數值越大,動畫越慢。預設值為'normal',代碼400毫秒的延時;'fast'和'slow'分別代表200和600毫秒的延時
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <style> li{text-decoration: underline; margin-top: 2px;} </style> <ul id="con" style="display:inline-block;width:100px;cursor:pointer;margin:0;padding: 0;list-style:none;"> <li>fast</li> <li>normal</li> <li>slow</li> <li>100</li> <li>1000</li> </ul> <button id="reset">恢復</button> <div id="box" style="display:inline-block;height: 100px;width: 300px;background-color: lightblue"></div> <script> $('#reset').click(function(){ $('#box').show(); }) $('#con li').click(function(){ $('#box').slideUp($(this).html()) }) </script>
slideUp([duration][,easing])
slideUp()方法可以接受一個可選參數easing,表示過渡使用哪種緩動函數。jQuery自身提供"linear"和"swing",預設值為swing,其他可以使用相關的插件
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <style> li{text-decoration: underline; margin-top: 2px;} </style> <ul id="con" style="display:inline-block;width:100px;cursor:pointer;margin:0;padding: 0;list-style:none;"> <li>swing</li> <li>linear</li> </ul> <button id="reset">恢復</button> <div id="box" style="display:inline-