原生JS實現淡入淡出效果
摘要:淡入淡出效果,在日常項目中經常用到,可惜原生JS沒有類似的方法,而有時小的頁面并不值得引入一個jQuery庫,所以就自己寫了一個,已封裝, 有用得著的朋友, 可以直接使用. 代碼中另附有一個設置元素透明度的方法, 是按IE規則(0~100)設置, 若改成標準設置方法(0.00~1.00), 下面使用時請考慮浮點精確表達差值.
淡入淡出效果,在日常項目中經常用到,可惜原生JS沒有類似的方法,而有時小的頁面并不值得引入一個jQuery庫,所以就自己寫了一個,已封裝, 有用得著的朋友, 可以直接使用. 代碼中另附有一個設置元素透明度的方法, 是按IE規則(0~100)設置, 若改成標準設置方法(0.00~1.00), 下面使用時請考慮浮點精確表達差值.
參數說明:
fadeIn()與fadeOut()均有三個參數,第一個是事件, 必填; 第二個是淡入淡出速度, 正整數, 大小自己權衡, 可選參數; 第三個, 是指定淡入淡出到的透明度值(類似于jQuery中的fadeTo()), 0~100的正整數值, 也是可選參數.
核心代碼及演示: 查看樣例演示
01 //淡入效果(含淡入到指定透明度)
02 function fadeIn(elem, speed, opacity){
03 /*
04 * 參數說明
05 * elem==>需要淡入的元素
06 * speed==>淡入速度,正整數(可選)
07 * opacity==>淡入到指定的透明度,0~100(可選)
08 */
09 speed = speed || 20;
10 opacity = opacity || 100;
11 //顯示元素,并將元素值為0透明度(不可見)
12 elem.style.display = 'block';
13 iBase.SetOpacity(elem, 0);
14 //初始化透明度變化值為0
15 var val = 0;
16 //循環將透明值以5遞增,即淡入效果
17 (function(){
18 iBase.SetOpacity(elem, val);
19 val += 5;
20 if (val <= opacity) {
21 setTimeout(arguments.callee, speed)
22 }
23 })();
24 }
25
26 //淡出效果(含淡出到指定透明度)
27 function fadeOut(elem, speed, opacity){
28 /*
29 * 參數說明
30 * elem==>需要淡入的元素
31 * speed==>淡入速度,正整數(可選)
32 * opacity==>淡入到指定的透明度,0~100(可選)
33 */
34 speed = speed || 20;
35 opacity = opacity || 0;
36 //初始化透明度變化值為0
37 var val = 100;
38 //循環將透明值以5遞減,即淡出效果
39 (function(){
40 iBase.SetOpacity(elem, val);
41 val -= 5;
42 if (val >= opacity) {
43 setTimeout(arguments.callee, speed);
44 }else if (val < 0) {
45 //元素透明度為0后隱藏元素
46 elem.style.display = 'none';
47 }
48 })();
49 }
02 function fadeIn(elem, speed, opacity){
03 /*
04 * 參數說明
05 * elem==>需要淡入的元素
06 * speed==>淡入速度,正整數(可選)
07 * opacity==>淡入到指定的透明度,0~100(可選)
08 */
09 speed = speed || 20;
10 opacity = opacity || 100;
11 //顯示元素,并將元素值為0透明度(不可見)
12 elem.style.display = 'block';
13 iBase.SetOpacity(elem, 0);
14 //初始化透明度變化值為0
15 var val = 0;
16 //循環將透明值以5遞增,即淡入效果
17 (function(){
18 iBase.SetOpacity(elem, val);
19 val += 5;
20 if (val <= opacity) {
21 setTimeout(arguments.callee, speed)
22 }
23 })();
24 }
25
26 //淡出效果(含淡出到指定透明度)
27 function fadeOut(elem, speed, opacity){
28 /*
29 * 參數說明
30 * elem==>需要淡入的元素
31 * speed==>淡入速度,正整數(可選)
32 * opacity==>淡入到指定的透明度,0~100(可選)
33 */
34 speed = speed || 20;
35 opacity = opacity || 0;
36 //初始化透明度變化值為0
37 var val = 100;
38 //循環將透明值以5遞減,即淡出效果
39 (function(){
40 iBase.SetOpacity(elem, val);
41 val -= 5;
42 if (val >= opacity) {
43 setTimeout(arguments.callee, speed);
44 }else if (val < 0) {
45 //元素透明度為0后隱藏元素
46 elem.style.display = 'none';
47 }
48 })();
49 }
全站熱搜
留言列表