位置: IT常识 - 正文

JS实现轮播图(一看就懂逻辑清晰)(js轮播图视频教程)

编辑:rootadmin
JS实现轮播图(一看就懂逻辑清晰)

推荐整理分享JS实现轮播图(一看就懂逻辑清晰)(js轮播图视频教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js如何实现轮播图,js轮播图视频教程,js实现轮播图代码,js实现轮播图原理,js实现轮播图效果,js轮播图实现简单代码,js实现轮播图原理,js实现轮播图效果,内容如对您有帮助,希望把文章链接给更多的朋友!

轮播图有很多种实现方法,这是其中一种最清晰的方法。思路很清晰,代码很简单,欢迎大佬多指教。

先来看下效果图,嫌麻烦就不用具体图片来实现了,主要是理清思路。(自动轮播,左右按钮切换图片,小圆点切换图片,鼠标移入暂停轮播,鼠标移出继续轮播)

JS实现轮播图(一看就懂逻辑清晰)(js轮播图视频教程)

 HTML

首先是html内容,布局很简单,一个图片列表,一个点列表,两个按钮。注意data-index使用HTML5中的data-xx属性来嵌入自定义数据(下面JS代码会提到)。记得给默认显示的图片和对应的小圆点加上active类哦。

<div class="wrap"> <ul class="list"> <li class="item active">0</li> <li class="item">1</li> <li class="item">2</li> <li class="item">3</li> <li class="item">4</li> </ul> <ul class="pointList"> <li class="point active" data-index = 0></li> <li class="point" data-index = 1></li> <li class="point" data-index = 2></li> <li class="point" data-index = 3></li> <li class="point" data-index = 4></li> </ul> <button class="btn" id="leftBtn"> < </button> <button class="btn" id="rightBtn"> > </button> </div>CSS 

思路:父容器list相对定位,item绝对定位,实现让所有图片重叠在父容器内。利用z-index来设置图片高度,图片高度最高会显示在顶层上。那么整个容器中,左右切换按钮和小圆点始终要在最顶层,不能被图片覆盖,所以他们的z-index一定要比图片高。active是一个样式,给某张图片绑定这个样式就能在最上层显示。然后就是图片切换的渐变效果,opacity完全不透明到透明,再加个transition动画效果。最后就是cursor给小圆点添加“小手指”,其他就没什么好说的了。

<style> .wrap { width: 800px; height: 400px; position: relative; } .list { width: 800px; height: 400px; position: relative; padding-left: 0px; } .item { width: 100%; height: 100%; list-style: none; position: absolute; left: 0; opacity: 0; transition: all .8s; } .item:nth-child(1) { background-color: skyblue; } .item:nth-child(2) { background-color: yellowgreen; } .item:nth-child(3) { background-color: rebeccapurple; } .item:nth-child(4) { background-color: pink; } .item:nth-child(5) { background-color: orange; } .item.active { z-index: 10; opacity: 1; } .btn { width: 60px; height: 100px; z-index: 100; top: 150px; position: absolute; } #leftBtn { left: 0px; } #rightBtn { right: 0px; } .pointList { list-style: none; padding-left: 0px; position: absolute; right: 20px; bottom: 20px; z-index: 200; } .point { width: 10px; height: 10px; background-color: antiquewhite; border-radius: 100%; float: left; margin-right: 8px; border-style: solid; border-width: 2px; border-color: slategray; cursor: pointer; } .point.active{ background-color: cadetblue; } </style>Javascript 

Index可以说是整个代码里面的"核心",先封装一个清除active的方法,这里面要清除图片的active(显示在最上层),比如切换到下一张图上张图的active就要清除。还有point的active(图片对应小圆点改变样式)。然后goIndex这个方法就是给图片和对应的小圆点同时加上active,左右按钮绑定的方法就不说了。

用getAttribute拿到刚才给li标签绑定的data-index属性,绑定图片index = pointindex,就能实现点击小圆点图片切换了。由于上面goIndex方法早已经绑定好了给图片添加active样式的时候也给小圆点添加的样式了,就可以实现图片切换小圆点跟随变化的效果。

<script> var items = document.querySelectorAll(".item");//图片节点 var points = document.querySelectorAll(".point")//点 var left = document.getElementById("leftBtn"); var right = document.getElementById("rightBtn"); var all = document.querySelector(".wrap") var index = 0; var time = 0;//定时器跳转参数初始化 //封装一个清除active方法 var clearActive = function () { for (i = 0; i < items.length; i++) { items[i].className = 'item'; } for (j = 0; j < points.length; j++) { points[j].className = 'point'; } } //改变active方法 var goIndex = function () { clearActive(); items[index].className = 'item active'; points[index].className = 'point active' } //左按钮事件 var goLeft = function () { if (index == 0) { index = 4; } else { index--; } goIndex(); } //右按钮事件 var goRight = function () { if (index < 4) { index++; } else { index = 0; } goIndex(); } //绑定点击事件监听 left.addEventListener('click', function () { goLeft(); time = 0;//计时器跳转清零 }) right.addEventListener('click', function () { goRight(); time = 0;//计时器跳转清零 }) for(i = 0;i < points.length;i++){ points[i].addEventListener('click',function(){ var pointIndex = this.getAttribute('data-index') index = pointIndex; goIndex(); time = 0;//计时器跳转清零 }) } //计时器轮播效果 var timer; function play(){ timer = setInterval(() => { time ++; if(time == 20 ){ goRight(); time = 0; } },100) } play(); //移入清除计时器 all.onmousemove = function(){ clearInterval(timer) } //移出启动计时器 all.onmouseleave = function(){ play(); } </script>

总结:这个简单的轮播图实现例子是第一次写最容易理解,逻辑最清晰的一种。下面我把完整的代码块放出来,直接复制粘贴就可以运行。

<!DOCTYPE html><html><head> <style> .wrap { width: 800px; height: 400px; position: relative; } .list { width: 800px; height: 400px; position: relative; padding-left: 0px; } .item { width: 100%; height: 100%; list-style: none; position: absolute; left: 0; opacity: 0; transition: all .8s; } .item:nth-child(1) { background-color: skyblue; } .item:nth-child(2) { background-color: yellowgreen; } .item:nth-child(3) { background-color: rebeccapurple; } .item:nth-child(4) { background-color: pink; } .item:nth-child(5) { background-color: orange; } .item.active { z-index: 10; opacity: 1; } .btn { width: 60px; height: 100px; z-index: 100; top: 150px; position: absolute; } #leftBtn { left: 0px; } #rightBtn { right: 0px; } .pointList { list-style: none; padding-left: 0px; position: absolute; right: 20px; bottom: 20px; z-index: 200; } .point { width: 10px; height: 10px; background-color: antiquewhite; border-radius: 100%; float: left; margin-right: 8px; border-style: solid; border-width: 2px; border-color: slategray; cursor: pointer; } .point.active{ background-color: cadetblue; } </style></head><body> <div class="wrap"> <ul class="list"> <li class="item active">0</li> <li class="item">1</li> <li class="item">2</li> <li class="item">3</li> <li class="item">4</li> </ul> <ul class="pointList"> <li class="point active" data-index = 0></li> <li class="point" data-index = 1></li> <li class="point" data-index = 2></li> <li class="point" data-index = 3></li> <li class="point" data-index = 4></li> </ul> <button class="btn" id="leftBtn"> < </button> <button class="btn" id="rightBtn"> > </button> </div> <script> var items = document.querySelectorAll(".item");//图片 var points = document.querySelectorAll(".point")//点 var left = document.getElementById("leftBtn"); var right = document.getElementById("rightBtn"); var all = document.querySelector(".wrap") var index = 0; var time = 0;//定时器跳转参数初始化 //清除active方法 var clearActive = function () { for (i = 0; i < items.length; i++) { items[i].className = 'item'; } for (j = 0; j < points.length; j++) { points[j].className = 'point'; } } //改变active方法 var goIndex = function () { clearActive(); items[index].className = 'item active'; points[index].className = 'point active' } //左按钮事件 var goLeft = function () { if (index == 0) { index = 4; } else { index--; } goIndex(); } //右按钮事件 var goRight = function () { if (index < 4) { index++; } else { index = 0; } goIndex(); } //绑定点击事件监听 left.addEventListener('click', function () { goLeft(); time = 0;//计时器跳转清零 }) right.addEventListener('click', function () { goRight(); time = 0;//计时器跳转清零 }) for(i = 0;i < points.length;i++){ points[i].addEventListener('click',function(){ var pointIndex = this.getAttribute('data-index') index = pointIndex; goIndex(); time = 0;//计时器跳转清零 }) } //计时器 var timer; function play(){ timer = setInterval(() => { time ++; if(time == 20 ){ goRight(); time = 0; } },100) } play(); //移入清除计时器 all.onmousemove = function(){ clearInterval(timer) } //移出启动计时器 all.onmouseleave = function(){ play(); } </script></body></html>

创作不易,觉得有帮助的话请留下一个赞谢谢~

本文链接地址:https://www.jiuchutong.com/zhishi/300416.html 转载请保留说明!

上一篇:37.JavaScript对象与JSON格式的转换,JSON.stringify、JSON.parse方法的使用方法和注意事项

下一篇:JS—节流与防抖(js防抖函数和节流函数)

  • 抖音怎么看访问主页的人(抖音怎么看访问我的人)

    抖音怎么看访问主页的人(抖音怎么看访问我的人)

  • 小米手环可以连接其他手机吗(小米手环可以连接iphone吗)

    小米手环可以连接其他手机吗(小米手环可以连接iphone吗)

  • 手机屏幕有个圆圈怎样去掉(手机屏幕有个圆圈怎么去掉)

    手机屏幕有个圆圈怎样去掉(手机屏幕有个圆圈怎么去掉)

  • 怎么设置qq群龙王标识(怎么设置qq群龙在线)

    怎么设置qq群龙王标识(怎么设置qq群龙在线)

  • 微星迫击炮麦克风没声音(微星迫击炮麦克风)

    微星迫击炮麦克风没声音(微星迫击炮麦克风)

  • 怎么不发消息知道微信删没删自己(怎么不发消息知道自己被删了)

    怎么不发消息知道微信删没删自己(怎么不发消息知道自己被删了)

  • 苹果xsmax屏幕有绿线(苹果xsmax多大屏幕尺寸)

    苹果xsmax屏幕有绿线(苹果xsmax多大屏幕尺寸)

  • 用别人家的WiFi怎样增强信号(用别人家的wifi看黄会有记录吗)

    用别人家的WiFi怎样增强信号(用别人家的wifi看黄会有记录吗)

  • 华为手机投屏电视成功了为什么不会显示(华为手机投屏电脑最简单方法)

    华为手机投屏电视成功了为什么不会显示(华为手机投屏电脑最简单方法)

  • 小米手环4跑步时不显示心率(小米手环4跑步不带手机可以记录运动轨迹吗)

    小米手环4跑步时不显示心率(小米手环4跑步不带手机可以记录运动轨迹吗)

  • 全民k歌能隐身听歌吗(全民k歌能隐身访问非好友吗)

    全民k歌能隐身听歌吗(全民k歌能隐身访问非好友吗)

  • iphone外接麦克风用不了(iphone外接麦克风录视频)

    iphone外接麦克风用不了(iphone外接麦克风录视频)

  • win10耳机和音响怎么同时使用(w10系统耳机和音响能一起播放吗)

    win10耳机和音响怎么同时使用(w10系统耳机和音响能一起播放吗)

  • 硬盘驱动器属于什么(在微机中硬盘驱动器属于)

    硬盘驱动器属于什么(在微机中硬盘驱动器属于)

  • word加密码怎么设置(word加密码怎么打开)

    word加密码怎么设置(word加密码怎么打开)

  • 查看微信图片地理位置(微信怎样查看图片地址)

    查看微信图片地理位置(微信怎样查看图片地址)

  • 手机滑动解锁忘了怎么办(手机滑动解锁忘记了)

    手机滑动解锁忘了怎么办(手机滑动解锁忘记了)

  • 快手直播伴侣为何闪退(快手直播伴侣为什么老是自己停止)

    快手直播伴侣为何闪退(快手直播伴侣为什么老是自己停止)

  • win10wi-fi密码在哪看(win10wifi密码在哪里看)

    win10wi-fi密码在哪看(win10wifi密码在哪里看)

  • swimsuitnetwork.exe - swimsuitnetwork是什么进程 有何作用

    swimsuitnetwork.exe - swimsuitnetwork是什么进程 有何作用

  • 最新9月win10密钥/激活码/序列号分享 附激活工具+教程(win101709密钥)

    最新9月win10密钥/激活码/序列号分享 附激活工具+教程(win101709密钥)

  • Chatgpt私有化部署(全流程)

    Chatgpt私有化部署(全流程)

  • 前端页面项目——博客系统(前端页面设计)

    前端页面项目——博客系统(前端页面设计)

  • 劳务税是什么 和个税的区别
  • 公司缴税怎么计算的
  • 税务局未核定的印花税
  • 不动产净值包括增值税吗
  • 工程物资和特种设备区别
  • 购销行为的帐务处理如何做?
  • 购入材料用于安装工程
  • 工会经费如何做会计分录科目
  • 管理人员的奖惩制度
  • 制造费用的
  • 营改增后房地产企业增值税税收筹划存在问题
  • 一个十图
  • 弥补以前年度亏损从哪里取数
  • 固定资产实物归哪个部门管理
  • 给已经注销的公司退款
  • 业务招待费如何进行纳税调整
  • 结转成本是否要等货物卖出后
  • 判断自己的眉型
  • 如何做无票收入的会计分录
  • 外购货物用于建造厂房可以抵扣进项税吗
  • 公司租的宿舍记什么科目
  • 企业变更股东要交税吗
  • remind32.exe - remind32是什么进程 有什么用
  • 芬迪flow
  • php7 数组
  • win7系统任务计划在哪里
  • 停车缴费怎么交
  • 劳动保护经费
  • 新西兰南岛西南部
  • react中路由有哪些常用组件
  • 图像识别算法汇总表
  • 实缴注册资本印花税如何缴纳
  • 2022年最新公务接待用餐标准
  • 社保和公积金在不同单位交可以吗
  • 理财产品的分红和收益是分开的吗
  • mongodb replica set 配置高性能多服务器详解
  • puthon zip函数
  • 开公司抬头的发票需要提供什么
  • 小微企业财政政策
  • SQL查询数据库中表的某一列
  • 将自产的应税消费品用于连续生产非应税消费品
  • 预收账款和应收账款可以合并吗
  • 盘盈盘亏怎么看
  • acca中ebq等于
  • 工程在建工程转固清单
  • 平销返利如何开票是负数的
  • 抵债资产如何做债权转让
  • 税务会计账务处理一般方法有哪些
  • 年报审计调整
  • 研发费用辅助账模板 税务局
  • 淘宝电商怎么做账
  • 一年不到
  • 实收资本,资本公积,盈余公积
  • 原始凭证的主要内容包括
  • 醒狗音乐免费下载歌曲2017最新版
  • mysql实时监控工具
  • windows server 2008 r2离线激活
  • 注册表.bak
  • winxp无法删除文件
  • 忘记mysql密码
  • xp输入法图标消失
  • win7语言栏不见了 各种方法都试过了
  • mac如何打印文件
  • win8.1系统升级
  • win10 系统账户
  • win8怎么运行命令
  • 宽带连接错误628win10
  • js实现无缝轮播
  • shell案例讲解
  • pycharm远程调试代码
  • jquery加载函数
  • nodejs操作mongodb
  • 在一个android创建一个按钮多选对话框
  • 浅析jQuery Ajax请求参数和返回数据的处理
  • jquery.flot
  • Jquery实现$.fn.extend和$.extend函数
  • 湖北税务发票真伪查询网
  • 主管局长和分管局长谈心谈话
  • 税收是初次分配的手段
  • 城市维护建设税的计税依据
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设