亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2017年07月17日 14:39:19   作者:diasa  
這篇文章主要為大家詳細(xì)介紹了js輪播圖的插件化封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

具體代碼如下:

~function(){
 function AutoBanner(curEleId,ajaxURL,interval){
  //把之前存儲獲取元素的變量都作為當(dāng)前實例的私有屬性
  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');

  //之前的全局變量也應(yīng)該變?yōu)樽约旱乃接袑傩?
  this.jsonData = null;
  this.interval = interval || 3000;
  this.autoTimer = null;
  this.step = 0;
  this.ajaxURL = ajaxURL;
  //返回當(dāng)前實例
  return this.init();
 }

 AutoBanner.prototype = {
  constructor:AutoBanner,
  //Ajax請求數(shù)據(jù)
  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)
  },
  //實現(xiàn)數(shù)據(jù)綁定
  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="" alt="" trueImg="'+curData['img']+'"></div>';
     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;
      //只對第一張?zhí)幚?
      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、讓當(dāng)前的透明度從0變?yōu)?,當(dāng)動畫結(jié)束,我們需要讓其他的div的透明度的值直接變?yōu)?
     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)
   }
   //實現(xiàn)焦點對其
   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"
   }
  },
  //實現(xiàn)焦點切換
  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();
    }
   }
  },
  //實現(xiàn)左右切換
  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();
   }
  },
  //當(dāng)前插件的唯一入口 命令模式:init相當(dāng)于指揮室,指揮各軍隊協(xié)同作戰(zhàn)
  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)

精彩專題分享:jQuery圖片輪播 JavaScript圖片輪播 Bootstrap圖片輪播

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微信小程序?qū)崿F(xiàn)多選框全選與反全選及購物車中刪除選中的商品功能

    微信小程序?qū)崿F(xiàn)多選框全選與反全選及購物車中刪除選中的商品功能

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)多選框全選與反全選及購物車中刪除選中的商品功能,本文通過截圖實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2019-12-12
  • JavaScript獲取指定元素位置的方法

    JavaScript獲取指定元素位置的方法

    這篇文章主要介紹了JavaScript獲取指定元素位置的方法,實例分析了javascript中l(wèi)eft、scrollLeft、top、scrollTop、offsetHeight等屬性的使用技巧,需要的朋友可以參考下
    2015-04-04
  • layui實現(xiàn)數(shù)據(jù)表格table分頁功能(ajax異步)

    layui實現(xiàn)數(shù)據(jù)表格table分頁功能(ajax異步)

    這篇文章主要為大家詳細(xì)介紹了layui實現(xiàn)數(shù)據(jù)表格table分頁功能、異步加載,表格渲染,含條件查詢,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • JS中的事件委托實例淺析

    JS中的事件委托實例淺析

    這篇文章主要介紹了JS中的事件委托,結(jié)合實例形式簡單分析了javascript事件委托的概念、功能、使用方法及相關(guān)注意事項,需要的朋友可以參考下
    2018-03-03
  • 微信小程序視圖控件與bindtap之間的問題的解決

    微信小程序視圖控件與bindtap之間的問題的解決

    這篇文章主要介紹了微信小程序視圖控件與bindtap之間的問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • JavaScript SweetAlert插件實現(xiàn)超酷消息警告框

    JavaScript SweetAlert插件實現(xiàn)超酷消息警告框

    SweetAlert是一款使用純js制作的消息警告框插件.這篇文章主要介紹了JavaScript SweetAlert插件實現(xiàn)超酷消息警告框的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • 移動端觸摸滑動插件swiper使用方法詳解

    移動端觸摸滑動插件swiper使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了移動端觸摸滑動插件swiper的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 微信小程序商品詳情頁底部彈出框

    微信小程序商品詳情頁底部彈出框

    這篇文章主要為大家詳細(xì)介紹了微信小程序商品詳情頁底部彈出框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Flash圖片上傳組件 swfupload使用指南

    Flash圖片上傳組件 swfupload使用指南

    這篇文章主要介紹了Flash圖片上傳組件 swfupload使用方法及示例,swfupload的使用范圍十分的廣泛,功能也很強大,今天我們就先來簡單的通過范例來學(xué)習(xí)下。
    2015-03-03
  • js 獲取當(dāng)前web應(yīng)用的上下文路徑實現(xiàn)方法

    js 獲取當(dāng)前web應(yīng)用的上下文路徑實現(xiàn)方法

    下面小編就為大家?guī)硪黄猨s 獲取當(dāng)前web應(yīng)用的上下文路徑實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08

最新評論