全网整合营销服务商

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

免费咨询热线: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 


相关文章: 如何快速搭建响应式可视化网站?  建站之星在线客服如何快速接入解答?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  如何通过西部数码建站助手快速创建专业网站?  高端网站建设与定制开发一站式解决方案 中企动力  如何在云主机上快速搭建多站点网站?  建站之星云端配置指南:模板选择与SEO优化一键生成  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  建站之星备案是否影响网站上线时间?  如何选择可靠的免备案建站服务器?  网站图片在线制作软件,怎么在图片上做链接?  建站主机选购指南:核心配置优化与品牌推荐方案  已有域名和空间,如何快速搭建网站?  如何在腾讯云免费申请建站?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  如何通过VPS建站无需域名直接访问?  C++如何编写函数模板?(泛型编程入门)  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  ,想在网上投简历,哪几个网站比较好?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何在Windows服务器上快速搭建网站?  如何在阿里云完成域名注册与建站?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  微课制作网站有哪些,微课网怎么进?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  建站之星后台密码遗忘或太弱?如何重置与强化?  建站之星如何取消后台验证码生成?  开封网站制作公司,网络用语开封是什么意思?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  如何选择高效可靠的多用户建站源码资源?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  网站制作员失业,怎样查看自己网站的注册者?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何正确选择百度移动适配建站域名?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  网站制作公司排行榜,抖音怎样做个人官方网站  家庭服务器如何搭建个人网站?  如何通过商城免费建站系统源码自定义网站主题?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  如何挑选最适合建站的高性能VPS主机?  实现虚拟支付需哪些建站技术支撑?  建站之星ASP如何实现CMS高效搭建与安全管理?  表情包在线制作网站免费,表情包怎么弄?  IOS倒计时设置UIButton标题title的抖动问题 

您的项目需求

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