最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

  • javascript操作向表格中動態(tài)加載數(shù)據(jù)

    javascript操作向表格中動態(tài)加載數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了javascript操作向表格中動態(tài)加載數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • JavaScript中的對象序列化介紹

    JavaScript中的對象序列化介紹

    這篇文章主要介紹了JavaScript中的對象序列化介紹,JavaScript中的對象序列化是通過JSON.stringify()來實現(xiàn)的,而反序列化則通過JSON.parse()來實現(xiàn),需要的朋友可以參考下
    2014-12-12
  • 寫入cookie的JavaScript代碼庫 cookieLibrary.js

    寫入cookie的JavaScript代碼庫 cookieLibrary.js

    cookieLibrary.js 寫入cookie的JavaScript代碼庫,需要的朋友可以參考下。
    2009-10-10
  • JS延遲加載加快頁面打開速度示例代碼

    JS延遲加載加快頁面打開速度示例代碼

    使用JS延遲加載可以加快打開速度,下面有幾個不錯的示例,感興趣的朋友可以參考下
    2013-12-12
  • 淺談Webpack打包優(yōu)化技巧

    淺談Webpack打包優(yōu)化技巧

    這篇文章主要介紹了淺談Webpack打包優(yōu)化,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • weui框架實現(xiàn)上傳、預(yù)覽和刪除圖片功能代碼

    weui框架實現(xiàn)上傳、預(yù)覽和刪除圖片功能代碼

    weui框架暫時只有css文件,并沒有js文件實現(xiàn)其功能,我在其html+css后面增加了js實現(xiàn)其功能,為大家提供方便,也為自己保存記錄。具體實例代碼大家參考下本文
    2017-08-08
  • JavaScript實現(xiàn)簡單計時器

    JavaScript實現(xiàn)簡單計時器

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)簡單計時器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • js對象合并與數(shù)組合并綜合應(yīng)用舉例

    js對象合并與數(shù)組合并綜合應(yīng)用舉例

    這篇文章主要給大家介紹了關(guān)于js對象合并與數(shù)組合并綜合應(yīng)用舉例的相關(guān)資料,本文將介紹常見的JS對象合并和數(shù)組合并方法,幫助讀者更好地理解和運用這些方法,需要的朋友可以參考下
    2023-11-11
  • JS組件Bootstrap Table使用方法詳解

    JS組件Bootstrap Table使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了JS組件Bootstrap Table使用方法,具有一定的實用性,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 詳解javascript對數(shù)組和json數(shù)組的操作

    詳解javascript對數(shù)組和json數(shù)組的操作

    這篇文章主要介紹了javascript對數(shù)組和json數(shù)組的操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論

新郑市| 卢龙县| 水富县| 河北区| 彰武县| 陇南市| 印江| 涡阳县| 开封市| 河北区| 洪洞县| 岳普湖县| 太仆寺旗| 梓潼县| 龙南县| 甘德县| 石棉县| 赣榆县| 吉隆县| 大丰市| 沂水县| 鹿泉市| 视频| 高唐县| 廊坊市| 盘锦市| 芦溪县| 长武县| 江西省| 资阳市| 武威市| 彭泽县| 肥西县| 岳阳县| 尚义县| 高雄市| 绥江县| 梁平县| 宝应县| 勐海县| 仙游县|