位置: 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防抖函数和节流函数)

  • 华为5g手机可以用4g网吗(华为5g手机可以用4g卡吗)

    华为5g手机可以用4g网吗(华为5g手机可以用4g卡吗)

  • 小米9和9pro的区别(小米9和小米9pro一样吗)

    小米9和9pro的区别(小米9和小米9pro一样吗)

  • 一加7t对比oppoace(一加7t对比一加7pro参数)

    一加7t对比oppoace(一加7t对比一加7pro参数)

  • qq历史头像怎么一次性全部删除(QQ历史头像怎么恢复不了)

    qq历史头像怎么一次性全部删除(QQ历史头像怎么恢复不了)

  • 瑞祥卡可以充话费吗(瑞祥卡充话费没到账)

    瑞祥卡可以充话费吗(瑞祥卡充话费没到账)

  • 设置黑名单分卡1卡2吗(黑名单 设置)

    设置黑名单分卡1卡2吗(黑名单 设置)

  • 爱奇艺换头像一天几次(更换爱奇艺头像)

    爱奇艺换头像一天几次(更换爱奇艺头像)

  • pin 是啥(笔记本pin是啥)

    pin 是啥(笔记本pin是啥)

  • 苹果xsmax有息屏时钟功能吗(苹果xsmax灭屏怎么显示时间)

    苹果xsmax有息屏时钟功能吗(苹果xsmax灭屏怎么显示时间)

  • 手机开飞行模式别人打电话是关机吗(手机开飞行模式别人打电话会有来电提醒吗)

    手机开飞行模式别人打电话是关机吗(手机开飞行模式别人打电话会有来电提醒吗)

  • 键盘num灯亮按键无反应(电脑键盘num灯一直亮)

    键盘num灯亮按键无反应(电脑键盘num灯一直亮)

  • 麒麟960为什么叫火麒麟(麒麟960是国产的吗)

    麒麟960为什么叫火麒麟(麒麟960是国产的吗)

  • 京东的热8是什么情况(京东热8购物持续多久)

    京东的热8是什么情况(京东热8购物持续多久)

  • word文件如何存入桌面(word文件如何存为pdf)

    word文件如何存入桌面(word文件如何存为pdf)

  • 苹果xr需要贴膜吗(苹果xr需不需要贴膜)

    苹果xr需要贴膜吗(苹果xr需不需要贴膜)

  • 黑鲨2支持无线快充吗(黑鲨支持无线充吗)

    黑鲨2支持无线快充吗(黑鲨支持无线充吗)

  • 144192的照片怎么设置(144192的照片怎么设置手机)

    144192的照片怎么设置(144192的照片怎么设置手机)

  • 锁屏故事怎么取消(锁屏故事怎么取消订阅)

    锁屏故事怎么取消(锁屏故事怎么取消订阅)

  • 如何消除手机上的圆圈(如何消除手机上的悬浮球)

    如何消除手机上的圆圈(如何消除手机上的悬浮球)

  • 0x0000007f怎么修复(0x0000007f解决)

    0x0000007f怎么修复(0x0000007f解决)

  • win1019025怎么更新(win10怎么更换版本)

    win1019025怎么更新(win10怎么更换版本)

  • vue项目引入百度地图BMapGL和BMap实例,以及辅助工具BMapGLLib 的引入,BMapGL鼠标绘制功能(vue引入mui)

    vue项目引入百度地图BMapGL和BMap实例,以及辅助工具BMapGLLib 的引入,BMapGL鼠标绘制功能(vue引入mui)

  • Element UI级联选择器 多选模式下,实现同一父级下最多只能选中一个子级(elementui级联选择器清空方法)

    Element UI级联选择器 多选模式下,实现同一父级下最多只能选中一个子级(elementui级联选择器清空方法)

  • JS实战——轮播图(js轮播图实现思路)

    JS实战——轮播图(js轮播图实现思路)

  • 个调税新政策
  • 增值税普通发票怎么开
  • 铜川缴纳房屋契税怎么算
  • 餐饮行业的成本率在多少才正常
  • 营改增后为什么利息要提供发票吗
  • 劳务发票可以抵扣多少
  • 经纪代理代订机票电了发票如何入账
  • 包装版费怎么计入生产成本
  • 政府补贴营业外收入所得税汇算清缴需要调增吗
  • 电子税务局在哪里看财务报表
  • 强制解除财务负责人
  • 未加盖发票专用章的发票是不合规
  • 增值税会计核算设置的会计科目有哪些
  • 产品质量问题怎么处罚
  • 废品材料回收价格
  • 进项税申报但未抵扣
  • 调整已结转的税种有哪些
  • 运费抵扣的税收筹划是怎样的?
  • 小规模税局代增值税专用发票怎么交税
  • 增值税发票系统怎么升级
  • 出租车库收入是否需要计算缴纳土地增值税
  • 食堂货款报账明细表
  • 销售产品的成本属于什么科目
  • 用友t8怎么删除凭证
  • 教育费附加税优惠
  • 货币性项目和非货币性项目的区别是什么?如何进行处理?
  • 小规模企业记账流程
  • 生产车间的窗帘怎么处理
  • 鸿蒙系统桌面布局图片怎么设置
  • 付款交单和承兑交单对卖方来说都有一定风险
  • 鸿蒙系统怎么设置桌面小组件
  • 存放中央银行款项科目按其资金性质
  • 补收入的会计分录
  • 非城市公交企业管理办法
  • linuxweb服务器搭建教程
  • 记一次调试YOLOv5+DeepSort车辆跟踪项目的经过
  • nohup命令挂不上 每次都直接退出
  • 进项发票无法取消怎么办
  • 软件开发费属于什么费用
  • 代开发票是否代征城建税和教育费附加?
  • 帝国cms如何使用
  • 进出口企业需要英文公章吗
  • 更正申报会扣分吗
  • 免税收入与不征收的区别
  • 税收类型增值税有哪些
  • sql server 2005怎么用
  • 采用汇兑的方式归还前欠货款
  • 幼儿园伙食账目
  • 计提工资是计提哪个月的
  • 广交会展务
  • 房屋如何计提折旧费
  • 无形资产计提减值准备计算
  • 公账发工资如何记账
  • 企业应收账款的规模受哪些因素的影响?( )
  • 工会筹备金记什么科目
  • 虚拟模块
  • 会计当期损益指什么
  • sql数据库监控工具
  • 数据库设计三大范式
  • redhat语言设置中文
  • 复制粘贴报错
  • kdeskcore.exe是什么
  • win10系统声音怎么打开
  • win8图片查看器无法打开图片内存不足
  • jquery怎么写
  • js 判断一个数字是否相等
  • jsp下拉框跳转到相应页面
  • 如何修改安卓app的程序
  • javascript中的splice
  • 欢迎使用本公司智能语音电动车
  • 怎么用js实现滑动效果
  • 工具类别怎么填写
  • 置顶聊天折叠怎么关闭
  • 在css中
  • 增加税务人员怎么加?
  • 税务系统福利
  • 应税消费品通过什么科目核算
  • 房产证加名字需要哪些手续和费用
  • 河南省税务局系统最新消息
  • 安徽农村户口可以交社保吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设