JavaScript实现无限轮播效果


Posted in Javascript onNovember 19, 2020

本文实例为大家分享了JavaScript实现无限轮播效果的具体代码,供大家参考,具体内容如下

效果展示

JavaScript实现无限轮播效果

原理

JavaScript实现无限轮播效果

图片说明原理

轮播顺序:1?>2?>3?>4?>5?>1的副本?>2?>3?>4?>5?>1的副本?>2…一直循环

JavaScript实现无限轮播效果

鼠标进入图片时自动轮播暂停,离开后恢复

资源下载

代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>无限轮播</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      list-style: none;
    }
    img {
      vertical-align: top;
    }
    #slider {
      width: 520px;
      height: 280px;
      border: 1px solid #000;
      padding: 10px;
      margin: 100px auto;
      position: relative;

    }
    #top {
      width: 100%;
      height: 100%;
      position: relative;
      overflow: hidden;
    }
    #top ul {
      width: 3120px;
      height: 100%;
      position: absolute;
      left: 0;
      top: 0;
    }
    #top ul li {
      width: 520px;
      height: 280px;
      float: left;
    }
    #slider ol {
      position: absolute;
      right: 10px;
      bottom: 10px;
    }
    #slider ol li {
      width: 20px;
      height: 20px;
      background-color: darkgrey;
      display: inline-block;
      border-radius: 50%;
      margin-right: 3px;
      cursor: pointer;
    }
    #slider ol li.current {
      background-color: orangered;
    }
  </style>
</head>
<body>
  <div id="slider">
    <div id="top">
      <ul id="ul">
        <li><img src="images/pic01.jpg" alt=""></li>
        <li><img src="images/pic02.jpg" alt=""></li>
        <li><img src="images/pic03.jpg" alt=""></li>
        <li><img src="images/pic04.jpg" alt=""></li>
        <li><img src="images/pic05.jpg" alt=""></li>
      </ul>
    </div>
    <ol id="ol">
    </ol>
  </div>
<script src="js/myFunc.js"></script>
<script>
  window.onload = function () {
    // 1.获取需要的标签
    var lis = $("ul").children;

    // 6.自动轮播参数定义(图片索引,圆点索引)
    var currentIndex = 0, indicatorIndex = 0;

    // 2.克隆li标签(将第一个li标签克隆一份到最后一个li标签后面)
    $("ul").appendChild(lis[0].cloneNode(true));

    // 3.动态创建右下角的圆点
    for(var i=0; i<lis.length-1; i++){ // 因为克隆了一个li,所以需要减1
      var li = document.createElement("li");
      $("ol").appendChild(li);
    }

    // 4.第一个圆点选中
    $("ol").children[0].className = "current";

    // 5.监听鼠标进入圆点
    var olLis = $("ol").children;
    for(var j=0; j<olLis.length; j++){
      (function (j) { // 闭包
        // 5.1 获取单独的li标签
        var li = olLis[j];

        // 5.2 鼠标进入
        li.onmouseover = function () {
          for(var i=0; i<olLis.length; i++){ // 排他思想
            olLis[i].className = "";
          }

          this.className = "current";

          // 5.3 轮播图动起来
          constant($("ul"), -(520 * j), 60);

          // 6.1
          currentIndex = indicatorIndex = j;
        }
      })(j)
    }

    // 7.自动轮播
    var timer = setInterval(autoPlay, 1000);

    // 8.清除和设置定时器
    $("slider").onmouseover = function () {
      clearInterval(timer);
    };

    $("slider").onmouseout = function () {
      timer = setInterval(autoPlay, 1000);
    };

    /**
     * 自动轮播函数
     */
    function autoPlay() {
      // 7.1 ul 滚动起来
      currentIndex++;
      if(currentIndex > lis.length-1){
        $("ul").style.left = 0;
        currentIndex = 1;
      }
      constant($("ul"), -currentIndex * 520, 60);

      // 7.2 圆点滚动起来
      indicatorIndex++;
      if(indicatorIndex > olLis.length-1){
        indicatorIndex = 0;
      }
      for(var i=0; i<olLis.length; i++){ // 排他思想
        olLis[i].className = "";
      }

      olLis[indicatorIndex].className = "current";
    }
  }
</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery Firefox3.5中操作select的问题
Jul 10 Javascript
JS+XML 省份和城市之间的联动实现代码
Oct 14 Javascript
Jquery替换已存在于element上的event的方法
Mar 09 Javascript
基于jQuery的树控件实现代码(asp.net+json)
Jul 11 Javascript
js判断屏幕分辨率的代码
Jul 16 Javascript
判断文档离浏览器顶部的距离的方法
Jan 08 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
May 14 Javascript
javascript实现简单加载随机色方块
Dec 25 Javascript
你点的 ES6一些小技巧,请查收
Apr 25 Javascript
解决angularjs中同步执行http请求的方法
Aug 13 Javascript
vue实现菜单切换功能
May 08 Javascript
vue-loader中引入模板预处理器的实现
Sep 04 Javascript
微信小程序实现分页加载效果
Nov 19 #Javascript
vue-drawer-layout实现手势滑出菜单栏
Nov 19 #Vue.js
H5 js点击按钮复制文本到粘贴板
Nov 19 #Javascript
JS数据类型分类及常用判断方法
Nov 19 #Javascript
JavaScript构造函数原理及实现流程解析
Nov 19 #Javascript
javascript this指向相关问题及改变方法
Nov 19 #Javascript
JavaScript实现alert弹框效果
Nov 19 #Javascript
You might like
服务器web工具 php环境下
2010/12/29 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
js innerHTML 改变div内容的方法
2013/08/03 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
2017/09/08 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
微信小程序获取用户信息并保存登录状态详解
2019/05/10 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
Python实现简单的代理服务器
2015/07/25 Python
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
用Python实现数据的透视表的方法
2018/11/16 Python
Python-split()函数实例用法讲解
2020/12/18 Python
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
物流管理专业应届生求职信
2013/11/21 职场文书
4s店总经理岗位职责
2013/12/31 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python
python Tkinter模块使用方法详解
2022/04/07 Python
Java Redisson多策略注解限流
2022/09/23 Java/Android