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 相关文章推荐
js获取单选按钮的数据
Nov 27 Javascript
javascript下有关dom以及xml节点访问兼容问题
Nov 26 Javascript
[原创]来自ImageSee官方 JavaScript图片浏览器
Jan 16 Javascript
Ext grid 添加右击菜单
Nov 26 Javascript
Web开发者必备的12款超赞jQuery插件
Dec 03 Javascript
js数组操作学习总结
Nov 04 Javascript
使用AngularJS对路由进行安全性处理的方法
Jun 18 Javascript
PHP结合jQuery实现的评论顶、踩功能
Jul 22 Javascript
JS中Object对象的原型概念基础
Jan 29 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
Apr 26 Javascript
详解angular2.x创建项目入门指令
Oct 11 Javascript
JavaScript实现多个物体同时运动
Mar 12 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 strtok()函数的优点分析
2010/03/02 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
PHP 图片处理
2020/09/16 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
Firefox中autocomplete=&quot;off&quot; 设置不起作用Bug的解决方法
2011/03/25 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
2012/12/04 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
基于python log取对数详解
2018/06/08 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
管道维修工岗位职责
2013/12/27 职场文书
大学毕业感言
2014/01/10 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
《雷雨》教学反思
2014/02/20 职场文书
卖车协议书
2014/04/21 职场文书
公司捐款倡议书
2014/05/14 职场文书
群众路线剖析材料
2014/09/30 职场文书
假期安全教育广播稿
2014/10/04 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书