3.5_控制動畫效果
控制文字縮放、物件置中、圓角化的動畫效果
- 點選按鈕,放大文字
- 轉換fontSize為數值型態,達成遞增字體大小的效果
- css同時改變font-size和color
- animate()改變fontSize和width
- animate()執行完第一次特效後,接續其它動作
- animate()的queue參數,如何影響動畫撥放時間
- css置中功能
- animate()置中功能
- 圓角效果
點選按鈕,放大文字
點選按鈕時,<div class="box">內的文字大小設為25px
運行結果,文字大小為25px的畫面
統一變數為box,以減少jquery的dom搜尋次數
運行結果,修改後,設文字大小的功仍然正常運作
轉換fontSize為數值型態,達成遞增字體大小的效果
整理為閉包,且用console.log(fontSize)來測試預設字體的大小
運行結果,console中檢測,預設font-size大小為16px
檢測fontSize(字型大小)的變數型態
運行結果,fontSize型態為字串,字串是不能做數字運算的,所以要轉換為數字型態
使用parseInt()來轉換為數字後,測試是否能做數字運數(fontSize+5)
運行結果,數字由原先的16,經數字運算後變為21了
這次寫成fontSize+=5,使文字每點選一次變遞增5
運行結果,每按一次按鈕便可遞增字型大小
改為較短的寫法,寫成+=5就好
運行結果,較短的寫法仍可成功遞增字體大小
css同時改變font-size和color
也可同時修改多個css,如改成遞減字型大小,並將字設為白色。但若每修改一個樣式,就寫一個.css()太麻煩了。
有多個css樣式要設定時,可用將樣式寫在該{}內,統一為一個物件,以便一同修改css樣式
運行結果,成功運行,字大小和字顏色一同被改變了
animate()改變fontSize和width
將box.css改為box.animate就是動畫效果的設定了
運行結果,定型遞增動畫成功運行,不過字的顏色沒變,因animate()不支援改字顏色
同時遞加字型大小、寬度(注意,不用寫px喔)
運行結果,字型大小和寬度同步遞增
檢測原始碼,可看到animate()是快速修改style屬性,以得到動畫的效果
讓動畫在3秒內跑完
運行結果,動畫在3秒內變化完成
animate()執行完第一次特效後,接續其它動作
執行完swing特效後,執行console.log('completed')
運行結果,成功在執行完特效後,並console出complete
運用animate()的complete和step的方法,來分別記錄完成時和運作時的訊息
運行結果,成功console出動畫進行時和完成時的記錄
運用step()來觀察fontSize遞增的變化
運行結果,成功console出遞增的字型大小
在5秒內遞增字型大小為5後,接下來的5秒,改為遞增為10
運行結果,成功運行二次字型遞增動畫
在5秒內遞增字型大小為5後,接下來的3秒(3000),上邊距移動500px
運行結果,成功運行,字體變大後,上邊距變為500px的效果(記得box的css要設為relative,否則top無法運作)
animate()的queue參數,如何影響動畫撥放時間
queue設為false時,2個動畫加起來的時間為3000(第一個500,第2個2500)
queue設為true時,2個動畫加起來的時間為3500(第一個500,第2個3000)
css置中功能
接下來的目地是,算出視窗的寬度後,以完成置中
運行結果,box的左上角的確是置中了,但我們是希望以box的中心置中
用視窗寬度的一半減去box寬度的一半,來算出置中位置
運行結果,減去box寬度的一半後,很接近置中了,但還有padding要處理
outerWidth()等於width+padding的長度
運行結果,很接近置中了,但還有預設的margin要處理
設定body{ margin:0;}
運行結果,置中成功了
如果margin不想設為0,那要如何置中呢?
這次box的位置設定,改為absolute
運行結果,但這樣按鈕會被box蓋住,按不到喔
直接設為absoulte是行不通的,所以先改回來為relative
改為按鈕點選後,才將box的位置排列設為absolute
運行結果,置中成功了
animate()置中功能
之所以堅持要改為absolute的排列方式,是因為animate()一定要將位置排列設為absolute才可正常運作,不然這種置中的問題,只是修正margin為0就可以了
運行結果,置中動畫成功
分別算出置中位置的寬度(w)和高度(h)的位置,以達成水平和垂直位置都置中的效果
運行結果,水平和垂直置中動畫成功
使用兩次animate()來達成,先水平移動,後垂置移動的置中效果
運行結果,成功運行先水平,後垂直置中的動畫
這次設定動畫的撥放時間為2秒(2000)
運行結果,成功運行2秒內運行先水平後垂直的動畫
圓角效果
置中動畫完成了,現在來設定圓角效果(borderRadius)
運行結果,成功運行圓角化動畫(可以考慮用css寫就好)
這次改用css的寫法來設圓角
運用addClass()來加入剛寫好的圓角樣式
運行結果,圓角效果成功了(不過還沒有動畫喔)
寫入-webkit-transition: border-radius 1;(1秒內執行完圓角動畫效果)
運行結果,成功出現圓角動畫了(但是不同瀏灠器有不一樣的動畫寫法)
分別為-webkit(google chrome用)、-moz(firefox用)、-o(opera用)、-ms(IE用)
運行結果,不同瀏灠器都可正常運行動畫了