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 封装Ajax传递的数据代码
Jun 05 Javascript
基于angularjs实现图片放大镜效果
Aug 31 Javascript
深入理解选择框脚本[推荐]
Dec 13 Javascript
JS中IP地址与整数相互转换的实现代码
Apr 10 Javascript
jquery replace方法去空格
May 08 jQuery
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
Dec 23 Javascript
深入浅析Vue中的 computed 和 watch
Jun 06 Javascript
vue通过style或者class改变样式的实例代码
Oct 30 Javascript
Vue.js 中的 v-cloak 指令及使用详解
Nov 19 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
Apr 17 Javascript
jQuery实现简单三级联动效果
Sep 05 jQuery
微信小程序实现分页加载效果
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小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
jquery实现用户信息修改验证输入方法汇总
2015/07/18 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
利用ES6语法重构React组件详解
2017/03/02 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
Python文件去除注释的方法
2015/05/25 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
PyQt5 实现给窗口设置背景图片的方法
2019/06/13 Python
python如何保证输入键入数字的方法
2019/08/23 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
CSS3制作半透明边框(Facebox)类似渐变
2012/12/09 HTML / CSS
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
什么是命名空间(NameSpace)
2015/11/24 面试题
软件测试英文面试题
2012/10/14 面试题
冰淇淋店的创业计划书
2014/02/07 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
求职意向书范文
2014/04/01 职场文书
群众路线党课主持词
2014/04/01 职场文书
项目负责人任命书
2014/06/04 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
解决python绘图使用subplots出现标题重叠的问题
2021/04/30 Python
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript
JavaScript实例 ODO List分析
2022/01/22 Javascript