全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

js轮播图的插件化封装详解

本文实例为大家分享了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="" 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;
      //只对第一张处理
      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)

精彩专题分享:jQuery图片轮播 JavaScript图片轮播 Bootstrap图片轮播

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js  # 轮播图  # 插件  # Swiper.js插件超简单实现轮播图  # js实现无缝轮播图插件封装  # 原生JS轮播图插件  # js实现轮播图的完整代码  # 原生js实现轮播图的示例代码  # js实现支持手机滑动切换的轮播图片效果实例  # JS轮播图实现简单代码  # js实现点击左右按钮轮播图片效果实例  # JS实现左右无缝轮播图代码  # js原生轮播图插件制作  # 自己的  # 对其  # 大家分享  # 第一张  # 只对  # 绑定  # 让其  # 具体内容  # 大家多多  # 加载  # 全局变量  # init  # return  # Ajax  # constructor  # prototype  # step  # jsonData  # JavaScript  # li 


相关文章: 电脑免费海报制作网站推荐,招聘海报哪个网站多?  宝塔建站无法访问?如何排查配置与端口问题?  网站制作软件有哪些,制图软件有哪些?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  宝塔面板如何快速创建新站点?  免费视频制作网站,更新又快又好的免费电影网站?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  网站制作价目表怎么做,珍爱网婚介费用多少?  如何生成腾讯云建站专用兑换码?  建站主机系统SEO优化与智能配置核心关键词操作指南  javascript基本数据类型及类型检测常用方法小结  广德云建站网站建设方案与建站流程优化指南  导航网站建站方案与优化指南:一站式高效搭建技巧解析  安云自助建站系统如何快速提升SEO排名?  如何有效防御Web建站篡改攻击?  建站主机与虚拟主机有何区别?如何选择最优方案?  宝塔Windows建站如何避免显示默认IIS页面?  怎么将XML数据可视化 D3.js加载XML  网站制作免费,什么网站能看正片电影?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  制作农业网站的软件,比较好的农业网站推荐一下?  如何在万网自助建站平台快速创建网站?  网站制作话术技巧,网站推广做的好怎么话术?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  如何使用Golang安装API文档生成工具_快速生成接口文档  如何选择最佳自助建站系统?快速指南解析优劣  详解jQuery停止动画——stop()方法的使用  建站之星logo尺寸如何设置最合适?  如何挑选高效建站主机与优质域名?  如何高效生成建站之星成品网站源码?  郑州企业网站制作公司,郑州招聘网站有哪些?  制作网站的基本流程,设计网站的软件是什么?  简单实现Android验证码  建站之星代理商如何保障技术支持与售后服务?  PHP正则匹配日期和时间(时间戳转换)的实例代码  江苏网站制作公司有哪些,江苏书法考级官方网站?  名字制作网站免费,所有小说网站的名字?  再谈Python中的字符串与字符编码(推荐)  c# await 一个已经完成的Task会发生什么  网站制作难吗安全吗,做一个网站需要多久时间?  如何用AWS免费套餐快速搭建高效网站?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  如何用wdcp快速搭建高效网站?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  深圳网站制作平台,深圳市做网站好的公司有哪些?  详解jQuery中基本的动画方法 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。