javascript怎么实现轮播图效果
发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,本篇内容主要讲解"javascript怎么实现轮播图效果",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"javascript怎么实现轮播图效果"吧!本文实例
千家信息网最后更新 2025年11月16日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安全错误 数据库的锁怎样保障安全 数据库元组连接符号 电脑服务器自检进不去系统 南阳中等计算机网络技术专业 基因编辑技术和软件开发 微信同名数据库 软件开发现在好搞吗 互联网引领科技 共享单车涉及的网络安全 每年国家网络安全周在几月份举行 软件开发智慧城市蓝图 软件开发做兼职被公司起诉 网络安全教育寒假前教育讲座 架构和软件开发工作 java数据库连接池实现 go 实现数据库功能 网络安全 精准营销 城市体检评估的指标数据库 为啥要测试服务器 魔兽世界打金选什么服务器 江西企业软件开发代理商 什么域名服务器采用迭代 海康串口服务器NC600系列 英雄网络技术有限公司 云计算和网络安全吗 网络安全大赛登陆 方舟服务器龙驯养上限 互联网大厂科技公司 重庆天畅远业网络技术 node写接口放在服务器上 dell服务器无法启动









