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照片伸缩效果不影响其他元素的布局
May 09 Javascript
什么是Node.js?Node.js详细介绍
Jun 01 Javascript
javascript自动恢复文本框点击清除后的默认文本
Jan 12 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
Feb 21 Javascript
JS绘制微信小程序画布时钟
Dec 24 Javascript
关于预加载InstantClick的问题解决方法
Sep 12 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
Jun 26 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
Sep 04 Javascript
JS实现移动端点击按钮复制文本内容
Jul 28 Javascript
基于VUE的v-charts的曲线显示功能
Oct 01 Javascript
非常漂亮的js烟花效果
Mar 10 Javascript
详解Vue的options
May 15 Vue.js
微信小程序实现分页加载效果
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
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
测试您的 PHP 水平的题目
2007/05/30 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
jquery.validate使用攻略 第二部
2010/07/01 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
2019/12/12 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
Python计时相关操作详解【time,datetime】
2017/05/26 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
Python turtle库的画笔控制说明
2020/06/28 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
自学考试自我鉴定范文
2013/09/26 职场文书
保密工作承诺书
2014/08/29 职场文书
2014年体育工作总结
2014/11/24 职场文书
世界红十字日活动总结
2015/02/10 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书