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获取父节点方法
Aug 20 Javascript
extjs 初始化checkboxgroup值的代码
Sep 21 Javascript
Flexigrid在IE下不显示数据的有效处理方法
Sep 04 Javascript
js 通过cookie实现刷新不变化树形菜单
Oct 30 Javascript
让html页面不缓存js的实现方法
Oct 31 Javascript
Javascript中关于Array.filter()的妙用详解
Dec 04 Javascript
Bootstrap Table从零开始
Jun 30 Javascript
JavaScript中document.referrer的用法详解
Jul 04 Javascript
JS实现移动端判断上拉和下滑功能
Aug 07 Javascript
vue实现自定义多选与单选的答题功能
Jul 05 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
Sep 01 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
Aug 22 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项目打包方法
2008/02/18 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
基于JQuery实现的Select级联
2014/01/27 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
Vue组件化开发思考
2018/02/02 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
python用字典统计单词或汉字词个数示例
2014/04/22 Python
Python中index()和seek()的用法(详解)
2017/04/27 Python
用Python PIL实现几个简单的图片特效
2019/01/18 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
如何开启linux的ssh服务
2013/06/03 面试题
语文教学感言
2014/02/06 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
佛光寺导游词
2015/02/10 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript