国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

js輪播圖的插件化封裝詳解

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

本文實例為大家分享了js輪播圖的插件化封裝代碼,供大家參考,具體內容如下

具體代碼如下:

~function(){  function AutoBanner(curEleId,ajaxURL,interval){    //把之前存儲獲取元素的變量都作為當前實例的私有屬性    this.banner = document.getElementById(curEleId);    this.bannerInner = utils.firstChild(this.banner);    this.bannerTip = utils.children(this.banner,"ul")[0];    this.bannerLink = utils.children(this.banner,'a');    this.bannerLeft = this.bannerLink[0];    this.bannerRight = this.bannerLink[1];    this.divList = this.bannerInner.getElementsByTagName('div');    this.imgList = this.bannerInner.getElementsByTagName('img');    this.oLis = this.bannerTip.getElementsByTagName('li');    //之前的全局變量也應該變為自己的私有屬性    this.jsonData = null;    this.interval = interval || 3000;    this.autoTimer = null;    this.step = 0;    this.ajaxURL = ajaxURL;    //返回當前實例    return this.init();  }  AutoBanner.prototype = {    constructor:AutoBanner,    //Ajax請求數據    getData:function(){      var _this = this;      var xhr = new XMLHttpRequest;      xhr.open("get",this.ajaxURL + "?_="+Math.random(),false);      xhr.onreadystatechange = function(){        if(xhr.readyState ===4 && /^2/d{2}$/.test(xhr.status)){          _this.jsonData = utils.formatJSON(xhr.responseText)        }      }      xhr.send(null)    },    //實現數據綁定    bindData:function(){      var str = "",str2 = "";      if(this.jsonData){        for(var i = 0,len=this.jsonData.length;i<len;i++){          var curData = this.jsonData[i];          str+='<div><img src=""          i===0?str2+="<li class='bg'></li>":str2+="<li></li>"        }      }      this.bannerInner.innerHTMl = str;      this.bannerTip.innerHTML = str2;    },    //延遲加載    lazyImg:function(){      var _this = this;      for(var i = 0,len = this.imgList.length;i<len;i++){        ~function(i){          var curImg = _this.imgList[i];          var oImg = new Image;          oImg.src = curImg.getAttribute('trueImg');          oImg.onload = function(){            curImg.src = this.src;            curImg.style.display = block;            //只對第一張處理            if(i===0){              var curDiv = curImg.parentNode;              curDiv.style.zIndex = 1;              myAnimate(curDiv,{opacity:1},200);            }            oImg = null;          }        }(i)      }    },    //自動輪播    autoMove:function(){      if(this.step === this.jsonData.length-1){        this.step = -1      }      this.step++;      this.setBanner();    },    //切換效果和焦點對齊    setBanner:function(){      for(var i = 0,len = this.divList.length;i<len;i++){        var curDiv = this.divList[i];        if(i===this.step){          utils.css(curDiv,"zIndex",1)          //2、讓當前的透明度從0變為1,當動畫結束,我們需要讓其他的div的透明度的值直接變為0          myAnimate(curDiv,{opacity:1},200,function(){            var curDivSib = utils.siblings(this);            for(var k = 0,len = curDivSib.length;k<len;k++){              utils.css(curDivSib[k],'opacity',0)            }          })          continue        }        utils.css(curDiv,"zIndex",0)      }      //實現焦點對其      for(i = 0,len = this.oLis.length;i<len;i++){        var curLi = this.oLis[i];        i === this.step?utils.addClass(curLi,"bg"):utils.removeClass(curLi,"bg");      }    },    //控制自動輪播    mouseEvent:function(){      var _this = this;      this.banner.onmouseover = function(){        window.clearInterval(_this.autoTimer);        _this.bannerLeft.style.display = _this.bannerRight.style.display = "block"      }      this.banner.onmouseout = function(){        _this.autoTimer = window.setInterval(function(){          _this.autoMove.call(_this)        },_this.interval);        _this.bannerLeft.style.display = _this.bannerRight.style.display = "none"      }    },    //實現焦點切換    tipEvent:function(){      var _this = this;      for(var i = 0,len = this.oLis.length;i<len;i++){        var curLi = this.oLis[i];        curLi.index = i;        curLi.onclick = function(){          _this.step = this.index;          _this.setBanner();        }      }    },    //實現左右切換    leftRight:function(){      var _this = this;      this.bannerRight.onclick = function(){        _this.autoMove();      };      this.bannerLeft.onclick = function(){        if(_this.step === 0){          _this.step = _this.jsonData.length;        }        _this.step--;        _this.setBanner();      }    },    //當前插件的唯一入口 命令模式:init相當于指揮室,指揮各軍隊協同作戰    init:function(){      var _this = this;      this.getData();      this.bindData();      window.setTimeout(function(){        _this.lazyImg();      },500);      this.autoTimer = window.setInterval(function(){        _this.autoMove();      },this.interval);      this.mouseEvent();      this.tipEvent();      this.leftRight();      return this;    }  }  window.AutoBanner = AutoBanner}()//使用var banner1 = new AutoBanner('banner','json/banner.txt',1000)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高邑县| 庆云县| 马边| 通辽市| 胶南市| 边坝县| 青浦区| 九龙县| 新余市| 恩平市| 攀枝花市| 高阳县| 蛟河市| 麟游县| 承德县| 囊谦县| 肇庆市| 安龙县| 河间市| 泰兴市| 扶绥县| 二手房| 巴中市| 安溪县| 崇文区| 双柏县| 濮阳县| 林西县| 滨海县| 松滋市| 邢台县| 田阳县| 镇宁| 渝北区| 南和县| 芦溪县| 宜君县| 隆回县| 石首市| 泾川县| 修武县|