亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

javascript原生封裝一個淡入淡出效果的函數測試實例代碼

2024-05-06 16:43:14
字體:
來源:轉載
供稿:網友

說到js的漸變顯示與消失,多數朋友會想到JQuery里面的fadeIn()、fadeOut()或fadeToggle()。但如果僅僅是為了引入這樣的一個效果,而去調用了龐大JQuery庫?或者說我通過用原生js實現一些函數來提高自己~

所以,我簡單的研究了一下純js代碼寫javascript/25879.html">淡入淡出的效果。

如果出現錯誤,請在評論中指出,我也好自己糾正自己的錯誤

javascript,淡入淡出,封裝函數

(一)FadeIn淡入函數

淡入淡出的效果,其實就是一個setInterval(),加上循環的DOM操作,通過改變element對象節點的透明度,即可實現這種效果。

所以我們提取出兩個必要的東西:setInterval()、opacity、以及speed。

  • speed : 這個是我們設置opacity的值從0到1的float數值變化速度
  • 淡入的邏輯:opacity的值從0到1的float數值變化。
  •  

我們來先看代碼實現!

html:

<div id="div1"></div><span id="span1">123</span><button>fadein</button><button>fadeOut</button>

css樣式

<style> div {  width: 100px;  height: 100px;  background-color: #1d7db1;  opacity:0; } </style>

首先我們來看fadeIn函數的第一版的寫法:先了解一下實現的思路

function fadeIn(ele, speed) {  let num = 0;  let time = setInterval(() => {    num += speed;    ele.style.opacity = num / 100;    if (num >= 100) {     clearInterval(time); // 清楚定時器    }  }, 30);  }}

當這個效果暫時實現以后,有些東西并沒有那么簡單。如果發生多次的觸發效果,會出現setInterval被多次同時使用,出現一些讓人頭疼的BUG。

要解決這個問題,目前有一個方案:添加一個全局狀態,防止多次觸發setInterval。

let Fadeflag = true;function fadeIn(ele, speed) {  let num = 0;  if (Fadeflag) {  let time = setInterval(() => {    num += speed;    Fadeflag = false;    ele.style.opacity = num / 100;    if (num >= 100) {     clearInterval(time);     Fadeflag = true;    }  }, 30);  }}

兼容性問題?。?!

先看代碼

set: function(elem, num) {  elem.style.opacity !== undefined ? elem.style.opacity = num / 100 : elem.style.filter = 'alpha(opacity = '+ num +')';}

注:代碼設置num/100是因為我們以ie為標準去兼容ff和GG

js里面設置DOM節點透明度的函數屬性:filter= "alpha(opacity=" + value+ ")"(兼容ie)

ie的filter范圍是0~100

opacity=value/100(兼容FF和GG)。

FF和GG的opacity是0~1 (為了兼容ie的filter范圍,我們用num/100)

(二)FadeOut淡出函數

speed : 這個是我們設置opacity的值從1到0的float數值變化速度(記得考慮兼容性)

淡出的邏輯:opacity的值從1到0的float數值變化。

封裝函數

(function() {  let fadeFlag = true;  function Fade(selector) {    this.elem = typeof selector == 'Object' ? selector : document.getElementById(selector);  }  Fade.prototype = {   constructor: Fade,    setOpacity: (elem, opacity) => { // 兼容ie10—      elem.filters ? elem.style.filter = 'alpha(opacity = '+ opacity +')':  elem.style.opacity = opacity / 100;      return true;   },   setOpacity: function(num) {      this.elem.style.opacity !== undefined ? this.elem.style.opacity = num / 100 : this.elem.style.filter = 'alpha(opacity = '+ num +')';   },    fadeIn: function(speed, opacity){   /*   speed ==>淡入的速度,正整數(可選);   opacity ==>淡入到指定的透明度,0~100(可選);      */      speed = speed || 2;      opacity = opacity || 100;      let num = 0; // 初始化透明度變化值為0      if (fadeFlag) {        let time = setInterval(() => {          num += speed;          fadeFlag = false;          this.setOpacity(num);          this.elem.style.opacity !== undefined ? this.elem.style.opacity = num / 100 : this.elem.style.filter = 'alpha(opacity = '+ num +')';          if (num >= opacity) {            clearInterval(time);            fadeFlag = true;          }        }, 20);      }    },    fadeOut: function(speed, opacity) {   /*   speed ==>淡入的速度,正整數(可選);   opacity ==>淡入到指定的透明度,0~100(可選);   */      speed = speed || 2;      opacity = opacity || 0;      let num = 100; // 初始化透明度變化值為0      if (fadeFlag) {        let time = setInterval(() => {          num -= speed;          fadeFlag = false;          this.set(num);          this.elem.style.opacity !== undefined ? this.elem.style.opacity = num / 100 : this.elem.style.filter = 'alpha(opacity = '+ num +')';          if (num <= opacity) {          clearInterval(time);          fadeFlag = true;          }        }, 20);      }    }  };window.Fade = Fade;})();

測試實例:

let btn = document.getElementsByTagName('button')[0]; let btn2 = document.getElementsByTagName('button')[1]; btn.onclick = () => {  let fade = new Fade('div1'); fade.fadeIn(); }; btn2.onclick = () => {  let fade = new Fade('div1');  fade.fadeOut(); }

總結

以上所述是小編給大家介紹的javascript原生封裝一個淡入淡出效果的函數測試實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一二在线观看| 日韩在线欧美在线国产在线| 国产精品久久一区| 日本精品久久久久久久| 亚洲国产精品网站| 中文字幕av一区二区| 欧美电影免费观看| 国产精品免费看久久久香蕉| 青青精品视频播放| 久久777国产线看观看精品| 丝袜亚洲欧美日韩综合| 国产精品免费福利| 2025国产精品视频| 久久久久在线观看| 国内精品久久久久久中文字幕| 亚洲理论电影网| 欧美高清视频免费观看| 亚洲人成电影网站色www| 欧美最猛性xxxxx亚洲精品| 欧美高清一级大片| 国产成人精品av在线| 91精品国产网站| 8x海外华人永久免费日韩内陆视频| 伊人成人开心激情综合网| 91精品国产网站| 亚洲天天在线日亚洲洲精| 欧美大片网站在线观看| 欧美一二三视频| 尤物99国产成人精品视频| 在线精品播放av| 久久精品国产亚洲7777| 久久在线视频在线| 6080yy精品一区二区三区| 91沈先生作品| 欧美华人在线视频| 国产ts人妖一区二区三区| 日韩欧中文字幕| 精品精品国产国产自在线| 综合网日日天干夜夜久久| 午夜免费在线观看精品视频| 蜜月aⅴ免费一区二区三区| 日韩av在线免费| 日av在线播放中文不卡| 国产国语videosex另类| 久久综合伊人77777蜜臀| 亚洲的天堂在线中文字幕| 国产日韩在线看| 国产欧美精品久久久| 92国产精品久久久久首页| 欧美亚洲在线视频| 一区二区欧美日韩视频| 亚洲天堂影视av| 美女国内精品自产拍在线播放| 亚洲激情在线观看| 国产一区二区三区欧美| 亚洲精品中文字幕av| 亚洲美女av黄| 精品美女久久久久久免费| 国产精品一区久久久| 日韩av电影免费观看高清| 国产成人一区二区在线| 亚洲精品ady| 欧美精品在线看| 51精品在线观看| 国产视频久久久久久久| 美女扒开尿口让男人操亚洲视频网站| 亚洲天堂免费视频| 性色av一区二区咪爱| 国产精品成av人在线视午夜片| 久久免费福利视频| 日韩的一区二区| 日韩欧美在线第一页| 国产美女91呻吟求| 国产精品美女久久| 亚洲大胆人体av| 亚洲性猛交xxxxwww| 欧美一区在线直播| 亚洲老头老太hd| www国产亚洲精品久久网站| 亚洲欧洲av一区二区| 久久精品欧美视频| 97福利一区二区| 久久网福利资源网站| 最近2019中文字幕一页二页| 国产成人在线精品| 精品国产91乱高清在线观看| 久久影视三级福利片| 欧美另类极品videosbestfree| 国产精品免费一区| 亚洲自拍偷拍福利| 国产成人精品久久二区二区| 亚洲最大av网站| 欧美日韩在线看| 欧美性理论片在线观看片免费| 欧美猛交免费看| 国产噜噜噜噜噜久久久久久久久| 久久久久久国产| 91国产视频在线播放| 精品中文视频在线| 国产伊人精品在线| 91精品国产乱码久久久久久蜜臀| 亚洲国产高潮在线观看| 在线观看日韩www视频免费| 欧美激情久久久久| 午夜精品一区二区三区在线| 欧美成人手机在线| 免费91在线视频| 97免费在线视频| 久久久av亚洲男天堂| 欧美午夜丰满在线18影院| 日韩在线观看免费| 日本不卡高字幕在线2019| 国自产精品手机在线观看视频| 国模极品一区二区三区| 亚洲色在线视频| 久久99久久99精品中文字幕| 国产成人精品在线| 亚洲性生活视频在线观看| 国产一区二区在线免费视频| 欧美在线一级va免费观看| 色av吧综合网| 日韩在线观看av| 精品亚洲国产成av人片传媒| 亚洲自拍在线观看| 中文字幕日韩精品有码视频| 欧美激情一区二区三区在线视频观看| 成人国产亚洲精品a区天堂华泰| 精品久久久久久亚洲精品| 亚洲人成在线免费观看| 国产精品美女在线观看| 亚洲爱爱爱爱爱| 成人福利网站在线观看11| 欧美日韩第一页| 中文字幕亚洲二区| 中文字幕久热精品视频在线| 日韩免费高清在线观看| 国产精品色午夜在线观看| 91po在线观看91精品国产性色| 欧美肥婆姓交大片| 欧美成人午夜免费视在线看片| 欧美国产在线电影| 亚洲精品日韩欧美| 欧美高清理论片| 欧美大片在线看| 操人视频在线观看欧美| 亚洲自拍偷拍网址| 青青久久aⅴ北条麻妃| 超在线视频97| 成人自拍性视频| 在线电影av不卡网址| 在线国产精品视频| 亚洲精品资源美女情侣酒店| 亚洲人成77777在线观看网| 日韩在线视频线视频免费网站| 亚洲欧美日韩高清| 青青久久av北条麻妃黑人| 久久久久久久一| 日韩中文字幕不卡视频| 欧美激情手机在线视频| 亚洲www视频| 日韩在线视频中文字幕| 日韩av影院在线观看| 日韩av三级在线观看| 欧美成人网在线|