javascript怎么实现轮播图效果
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"javascript怎么实现轮播图效果",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"javascript怎么实现轮播图效果"吧!本文实例
千家信息网最后更新 2026年11月03日javascript怎么实现轮播图效果
本篇内容主要讲解"javascript怎么实现轮播图效果",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"javascript怎么实现轮播图效果"吧!
本文实例为大家分享了javascript实现花样轮播效果的两种实现方法,供大家参考,具体内容如下
第一种:简单的带按钮的轮播
介绍:左右按钮控制轮播,点击左按钮切换上一张图片,点击右按钮切换下一张
html如下:
css如下:
.box{width: 1000px;height: 300px;margin: 20px auto;position: relative;overflow: hidden;} .box .imgbox{} .imgbox a{width: 1000px;height: 300px;position: absolute;left:1000px;top:0;} .imgbox a:nth-child(1){left:0;} .imgbox img{width: 1000px;height: 300px;} .btns input{width: 40px;height: 40px;position: absolute;top:130px;border: none;background: rgba(200,200,200,0.5);} #left{left:0;} #right{right: 0;}}js如下:
class Banner{ constructor(){ this.left = document.getElementById("left"); this.right = document.getElementById("right"); this.child = document.querySelectorAll(".imgbox a"); // 要进来的 this.iNow = 0; // 要走的 this.iPrev = this.child.length - 1; } init(){ var that = this; this.left.addEventListener("click",function(){ that.changeIndex(1); }) this.right.addEventListener("click",function(){ that.changeIndex(2); }) } changeIndex(direct){ if(direct == 1){ if(this.iNow == 0){ this.iNow = this.child.length-1; this.iPrev = 0; }else{ this.iNow--; this.iPrev = this.iNow + 1; } }else{ if(this.iNow == this.child.length-1){ this.iNow = 0; this.iPrev = this.child.length-1; }else{ this.iNow++; // 要走的索引永远是进来的索引-1 this.iPrev = this.iNow - 1; } } // 根据索引开始运动 this.move(direct); } move(direct){ if(direct == 1){ // iPrev走 // 从0,走到1000 this.child[this.iPrev].style.left = 0; move(this.child[this.iPrev],{left:1000}); // iNow进来 // 从-1000,进到0 this.child[this.iNow].style.left = -1000 + "px"; move(this.child[this.iNow],{left:0}); }else{ this.child[this.iPrev].style.left = 0; move(this.child[this.iPrev],{left:-1000}); this.child[this.iNow].style.left = 1000 + "px"; move(this.child[this.iNow],{left:0}); } } }var b = new Banner();b.init();第二种:自动轮播
介绍:两个左右按钮可以控制图片左右切换,下面带有数字的按钮,点击数字几,就可以切换到第几张,自动轮播的过程中,鼠标进入停止轮播,鼠标离开继续轮播
htm代码如下:
css代码如下:
.box{width: 1000px;height: 300px;margin: 20px auto;position: relative;overflow: hidden;}.box .imgbox{}.imgbox a{width: 1000px;height: 300px;position: absolute;left:1000px;top:0;}.imgbox a:nth-child(1){left:0;}.imgbox img{width: 1000px;height: 300px;}.btns input{width: 40px;height: 40px;position: absolute;top:130px;border: none;background: rgba(200,200,200,0.5);} #left{left:0;} #right{right: 0;}.list{width: 1000px;height: 30px;position: absolute;left: 0;bottom: 0;display: flex;background: rgba(200,200,200,0.5);}.list span{flex: 1;line-height: 30px;text-align: center;border-left:solid 1px black;border-right: solid 1px black;}.list span.active{background: red;color: #fff;}js代码如下:
class Banner{ constructor(){ this.left = document.getElementById("left"); this.right = document.getElementById("right"); this.child = document.querySelectorAll(".imgbox a"); this.list = document.querySelector(".list"); this.box = document.querySelector(".box"); this.iNow = 0; this.iPrev = this.child.length - 1; } init(){ var that = this; this.left.addEventListener("click",function(){ that.changeIndex(1); }) this.right.addEventListener("click",function(){ that.changeIndex(-1); }) // L3.事件委托绑定事件 this.list.onclick = function(eve){ var e = eve || window.event; var tar = e.target || e.srcElement; if(tar.tagName == "SPAN"){ // L4.触发事件时,执行改变索引,同时将点前点击的span传入 that.listChangeIndex(tar); } } } changeIndex(direct){ if(direct == 1){ if(this.iNow == 0){ this.iNow = this.child.length-1; this.iPrev = 0; }else{ this.iNow--; this.iPrev = this.iNow + 1; } }else{ if(this.iNow == this.child.length-1){ this.iNow = 0; this.iPrev = this.child.length-1; }else{ this.iNow++; this.iPrev = this.iNow - 1; } } this.move(direct); } move(direct){ // 根据左右按钮传入的状态:左1,右-1 // 利用乘法 // 改变不同按钮的方向问题 this.child[this.iPrev].style.left = 0; move(this.child[this.iPrev],{left:this.child[0].offsetWidth * direct}); this.child[this.iNow].style.left = -this.child[0].offsetWidth * direct + "px"; move(this.child[this.iNow],{left:0}); this.setActive(); } createList(){ // L1.创建对应图片数量的span,同时编号 var str = ``; for(var i=0;i${i+1}`; } this.list[xss_clean] = str; // L2.设置默认的当前项 this.setActive(); } setActive(){ for(var i=0;i this.iNow){ // L7-1.向左运动 this.listMove(1,index); } // L6-2.判断方向 if(index < this.iNow){ // L7-2.向右运动 this.listMove(-1,index); } // L8.将当前点击的索引设置成下次要走的索引 this.iNow = index; // L9.根据修改之后的索引,设置当前项 this.setActive(); } listMove(direct,index){ // this.iNow走 // 从哪走,走到哪 this.child[this.iNow].style.left = 0; move(this.child[this.iNow],{left:-1000 * direct}) // index进来 // 从哪进来,进到哪s this.child[index].style.left = 1000 * direct + "px"; move(this.child[index],{left:0}); } autoPlay(){ var t = setInterval(()=>{ this.changeIndex(-1); },2000) this.box.onmouseover = function(){ clearInterval(t); } var that = this; this.box.onmouseout = function(){ t = setInterval(()=>{ that.changeIndex(-1); },2000) } // console.log(that); } }var b = new Banner();b.init();b.createList();b.autoPlay(); 两个案例 js 里面的move是一个缓冲运动的封装,代码如下:
function move(ele,obj,cb){ clearInterval(ele.t); ele.t = setInterval(() => { // 假设状态为:可以清除计时器 var i = true; // 因为在计时器中才开始使用到对象中的信息,所以在计时器中遍历 // 并提前换来的属性和目标变量 for(var attr in obj){ if(attr == "opacity"){ var iNow = getStyle(ele,attr) * 100; }else{ var iNow = parseInt(getStyle(ele,attr)); } let speed = (obj[attr] - iNow)/10; speed = speed < 0 ? Math.floor(speed) : Math.ceil(speed); // 只要有一个属性到目标,就停了,不对 // 必须所有属性到目标,才能停 // 只要有一个属性没到目标,绝对不能停 // 用状态来标记到底要不要停止计时器 // 只要有一个属性没到目标:绝对不能清除计时器 if(iNow !== obj[attr]){ i = false; } if(attr == "opacity"){ ele.style.opacity = (iNow + speed)/100; }else{ ele.style[attr] = iNow + speed + "px"; } } // 如果每次计时器执行结束,所有属性都执行了一遍之后,状态还是true,表示,没有被改成false,如果没有被改成false,表示没有属性没到终点,那么状态还是false就不清除 if(i){ clearInterval(ele.t); // 用户决定在动画结束时要执行的功能,万一用户没传参,做个默认判断 if(cb){ cb(); } // cb && cb(); } }, 30);}function getStyle(ele,attr){ if(ele.currentStyle){ return ele.currentStyle[attr]; }else{ return getComputedStyle(ele,false)[attr]; }}到此,相信大家对"javascript怎么实现轮播图效果"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
按钮 属性 计时器 状态 目标 效果 代码 索引 切换 事件 内容 图片 运动 两个 动轮 同时 数字 方向 方法 用户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技活动banner 科技互联网龙头 中国互联网科技股 科技类互联网 猪兼强互联网科技 唐信互联网科技 九亚互联网科技 深圳期待互联网科技 重庆科技学院互联网 中国最先进互联网科技公司 海南科技产业互联网平台 汽车互联网创新科技园 互联网科技教育视频 栖莱科技互联网股份有限公司 新兴科技互联网创新大赛颁奖典礼 东莞新华互联网科技学校 山东子淼互联网科技有限公司 上海乐五互联网科技有限公司 亚光科技低轨卫星互联网 承德科技产业互联网平台 互联网科技海报 互联网科技战争 金融科技 互联网金融 小马过河互联网科技 佩信高科技互联网 广西拼得多互联网科技有限公司 宁波青枫互联网科技有限公司 互联网金融科技公司干啥的 江阴互联网智能科技产品进口 上海旺乐尼互联网科技有限公司









