今天分享一下自动播放轮播图,自动播放轮播图是在昨天分享的轮播图的基础上添加了定时器,用定时器控制图片的自动切换,函数中首先封装一个方向的自动播放工能的小函数,这个函数中添加定时器,定时器中可以放向右走的代码,也可以放向左走的代码,然后在js加载的时候先执行一次,保证页面加载的时候轮播图是自动播放的,当然在鼠标悬停在遮罩层的时候我们需要清除这个定时器,让自动播放功能关闭,然后在鼠标再次移出遮罩层的时候再次开启定时器,这样就实现了自动播放的功能。
然后今天的轮播图中我添加了开关的功能,这个开关是为了避免不停的快速点击切换图片时上一个move还没执行完毕然后下一个move再次开启的bug。开关的思路是在函数开始执行之前创造一个false,然后在函数刚开始的时候利用if判断配合布尔值的false实现开的功能,当代买执行过这个关马上让布尔值变为true,从而继续执行代码,在函数全部执行完毕的时候再返回为false;

下面分享代码

html代码:

    <div id="tab"><ul><li><img src="img/4.jpg" alt=""></li><li><img src="img/0.jpg" alt=""></li><li><img src="img/1.jpg" alt=""></li><li><img src="img/2.jpg" alt=""></li><li><img src="img/3.jpg" alt=""></li><li><img src="img/4.jpg" alt=""></li><li><img src="img/0.jpg" alt=""></li></ul><div id="cont"><div class="pre"><span>向左</span></div><div class="next"><span>向右</span></div><ol><li class="on"></li><li></li><li></li><li></li><li></li></ol></div></div>

  

css代码:

      *{padding: 0;margin: 0;list-style:none;}#tab{width: 300px;height: 172px;position:relative;margin:100px auto;overflow:hidden;}#tab ul{width:2100px;overflow:hidden;position:absolute;top: 0;left: 0px;}#tab ul li{width: 300px;float:left;}#tab ul li img{width: 300px;}#cont{width: 300px;height: 172px;position:absolute;top:0;left: 0;}#cont div{width: 150px;height: 100%;float:left;display:none;}#cont div span{width: 40px;height: 40px;background:rgba(0,0,0,0.2);text-align:center;line-height: 40px;font-size:20px;color:#fff;position:absolute;top:50%;margin-top:-20px;}#cont .pre span{left:0;}#cont .next span{right:0;}#cont ol{width: 100px;position:absolute;left: 100px;bottom:10px;}#cont ol li{width: 10px;height: 10px;background:#ccc;border-radius:50%;margin:5px;float:left;}#cont ol .on{background:red;}

  

js代码:

 window.οnlοad=function(){var oTab=document.getElementById('tab');var oUl=oTab.getElementsByTagName('ul')[0];var aLi=oUl.children;var oCont=document.getElementById('cont');var oBtn=oCont.getElementsByTagName('div');var oBar=oCont.getElementsByTagName('ol')[0];var aC=oBar.children;var timer=null;var bReady=false;//定位ul的初始位置var iNow=1;oUl.style.left=-aLi[0].offsetWidth*iNow+'px';//当鼠标移入遮罩层,按钮显示,移出遮罩层,按钮消失oCont.οnmοuseοver=function(){clearInterval(timer);oBtn[0].style.display='block';oBtn[1].style.display='block';};//当鼠标移出的时候开启定时器让ul自动向前运动oCont.οnmοuseleave=function(){setInterval(domove,2000);oBtn[0].style.display='none';oBtn[1].style.display='none';};//把运动封成一个函数,向前向后只是改变iNow的值和判断终点位置function domove(){if(bReady){return}bReady=true;iNow--;move(oUl,{left:-aLi[0].offsetWidth*iNow},{"complete":function(){if(iNow==0){iNow=aLi.length-2;oUl.style.left=-aLi[0].offsetWidth*iNow+'px';}for(var i=0;i<aC.length;i++){aC[i].className='';}aC[iNow-1].className='on';bReady=false;}});}

  

同样的,这个自动播放轮播图应用了我自己封装的move函数,这个move函数需要提前引入,move函数我已经分享到上一篇文章中;

明天会继续分享手机端的拖拽选项卡;

Improve myself little by little every day!

转载于:https://www.cnblogs.com/jasonwang2y60/p/6002528.html

js原生选项卡(自动播放无缝滚动轮播图)二相关推荐

  1. 原生JS实现PC端无缝滚动轮播图、匀速轮播图、匀速动画

    offset家族的了解 1.offsetHeight:元素的offsetHeight是一种元素CSS高度的衡量标准,包括元素的边框.内边距和元素的水平滚动条(如果存在且渲染的话),不包含:before ...

  2. JS经典案例-无缝滚动轮播图(纯JS)

    滚动轮播图 在JS初级阶段,轮播图是最基础最经典的案例,而相比于渐变轮播图,无缝滚动轮播图又要更难一点.渐变轮播图仅需要使用到点击事件.定时器等,而无缝滚动轮播图则需要考虑到 第一张>最后一张, ...

  3. JavaScript+HTML+CSS 无缝滚动轮播图的两种方式

    第一种方式 在轮播图最后添加第一张,一张重复的图片. 点击前一张,到了第一张,将父级oList移动到最后一张(也就是添加的重复的第一张),在进行后续动画. 点击下一张,到了最后一张(也就是添加的重复的 ...

  4. html菜鸟教程轮播图自动播放,如何实现轮播图?

    1.背景介绍 轮播图,是由网页banner进化而来,通常放在屏幕最显眼的位置,以大图显示.随着互联网的发展,网页中需要推广的信息越来越多,宣传信息都欲占据黄金位置,最后相互妥协,轮播图应运而生.总而言 ...

  5. 快乐玩前端:无缝衔接轮播图——原生JS实现

    无缝衔接轮播图--原生JS实现 原理就不讲了,太麻烦了,大致原理就是两扇推拉门,始终保持推拉门处于开启-闭合状态,大致就这样吧,原理很简单,只是说实现比较麻烦,一直想要实现这样的效果,奈何水平不够,也 ...

  6. android首页图片轮播效果,Android_Android自动播放Banner图片轮播效果,先看一下效果图支持本地图 - phpStudy...

    Android自动播放Banner图片轮播效果 先看一下效果图 支持本地图片以及网络图片or本地网络混合. 使用方式: android:id="@+id/banner" andro ...

  7. android 自动播放 幻灯片,Android自动播放Banner图片轮播效果

    本文实例为大家分享了Android自动播放Banner图片轮播的具体代码,供大家参考,具体内容如下 先看一下效果图 支持本地图片以及网络图片or本地网络混合. 使用方式: android:id=&qu ...

  8. Vuetify Carouse轮播图 图片切换导致页面总是自动跳转到轮播图位置

    文章目录 begin !!! Solution1 Solution2 end begin vuetify carouse轮播图 的图片自动切换的时候, 会自动聚焦跳转到轮播图自身的位置. 这导致了一个 ...

  9. 滚动轮播图+滚动轮播图定时器的添加(还原lol首页的轮播图)

    滚动轮播图+滚动轮播图定时器的添加(还原lol首页的轮播图) 每一步都有详细的注释: <!DOCTYPE html> <html lang="en"> &l ...

最新文章

  1. stm32和51单片机的区别,先学51还是先学stm32?
  2. hive export import
  3. codeforces round25
  4. 服务机器人---充电桩
  5. CKedit在线编辑器
  6. k8s extender_Windows Home Server的Drive Extender的9种选择
  7. animate.css动画样式详解
  8. (C语言版)栈和队列(二)——实现顺序存储栈和顺序存储队列的相关操作
  9. Oracle的dbf文件迁移
  10. python语法(三)——函数 如何返回多个数组 列表返回值 以及接收方法
  11. 20190825:(leetcode习题)最长公共前缀
  12. oracle添加字段sql并添加注释
  13. 小米笔记本linux指纹,小米笔记本Air 13.3寸指纹版(128GB)如何bios设置u盘启动
  14. 移动应用开发--实现QQ登录界面(Android)
  15. 电子凸轮和电子齿轮的差别
  16. 文件服务器整机克隆,克隆云服务器到本地
  17. 【IOS开发高级系列】异步绘制专题
  18. Python运维常用的脚本,提高工作效率就靠它了
  19. 说说计算机有哪些用途,电脑对你有什么用处?写5个英语句子,说明电脑对你的重要性...
  20. 如何使用Socks5代理IP加密Windows网络数据传输

热门文章

  1. python利器怎么编程-bluepy 一款python封装的BLE利器简单介绍
  2. python输出乘法口诀-【每日一练】python输出 9*9 乘法口诀表
  3. python百度网盘-bypy-百度网盘Python客户端 linux
  4. 怎么学python-没有任何基础的人,该如何学习Python?「附具体步骤」
  5. python是什么公司开发的软件-软件开发|什么是行为驱动的 Python?
  6. python正规教育机构-Python培训机构多吗 选择Python培训这些你都知道吗
  7. python下载word文件-Python用python-docx读写word文档
  8. c语言 python-C语言和python的区别
  9. python手机版怎么运行项目或脚本-python可以在手机上运行吗
  10. python之禅中文-python之禅-----我最喜欢的翻译版