js轮播图的插件化封装详解
发布时间 - 2026-01-11 02:22:55 点击率:次本文实例为大家分享了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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
教你用AI润色文章,让你的文字表达更专业
bootstrap日历插件datetimepicker使用方法
Python图片处理进阶教程_Pillow滤镜与图像增强
微信小程序 canvas开发实例及注意事项
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
Laravel如何使用Blade组件和插槽?(Component代码示例)
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
详解MySQL数据库的安装与密码配置
Laravel如何配置任务调度?(Cron Job示例)
微信小程序 HTTPS报错整理常见问题及解决方案
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
新三国志曹操传主线渭水交兵攻略
开心动漫网站制作软件下载,十分开心动画为何停播?
公司网站制作价格怎么算,公司办个官网需要多少钱?
教学论文网站制作软件有哪些,写论文用什么软件
?
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
jQuery 常见小例汇总
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
香港服务器租用每月最低只需15元?
装修招标网站设计制作流程,装修招标流程?
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
iOS发送验证码倒计时应用
Android中AutoCompleteTextView自动提示
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何在万网自助建站中设置域名及备案?
奇安信“盘古石”团队突破 iOS 26.1 提权
如何登录建站主机?访问步骤全解析
phpredis提高消息队列的实时性方法(推荐)
在Oracle关闭情况下如何修改spfile的参数
中山网站制作网页,中山新生登记系统登记流程?
Mybatis 中的insertOrUpdate操作
历史网站制作软件,华为如何找回被删除的网站?
如何在IIS管理器中快速创建并配置网站?
如何获取上海专业网站定制建站电话?
如何用5美元大硬盘VPS安全高效搭建个人网站?
如何快速辨别茅台真假?关键步骤解析
轻松掌握MySQL函数中的last_insert_id()
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
高端智能建站公司优选:品牌定制与SEO优化一站式服务
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
如何在IIS中配置站点IP、端口及主机头?
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
如何在云主机快速搭建网站站点?
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件

