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 相关文章推荐
用JavaScript实现UrlEncode和UrlDecode的脚本代码
Jul 23 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
Oct 21 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
Feb 10 Javascript
js单向链表的具体实现实例
Jun 21 Javascript
验证手机号码的JS方法分享
Sep 10 Javascript
jQuery实现可收缩展开的级联菜单实例代码
Nov 27 Javascript
jquery选择符快速提取web表单数据示例
Mar 27 Javascript
Javascript异步编程模型Promise模式详细介绍
May 08 Javascript
如何用JS判断两个数字的大小
Jul 21 Javascript
JavaScript拖动层Div代码
Mar 01 Javascript
js实现canvas图片与img图片的相互转换的示例
Aug 31 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
Sep 14 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
php简单计算页面加载时间的方法
2015/06/19 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
JavaScript类和继承 prototype属性
2010/09/03 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
获取body标签的两种方法
2011/10/13 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
2015/01/26 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
如何利用python进行时间序列分析
2020/08/04 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
京东国际站:JOYBUY
2017/11/23 全球购物
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
社区消防工作实施方案
2014/03/21 职场文书
药品业务员岗位职责
2014/04/17 职场文书
2014年党员整改措施
2014/10/24 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
天下第一关导游词
2015/02/06 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP