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 event 事件解析
Jan 31 Javascript
jQuery动画animate方法使用介绍
May 06 Javascript
浅析javascript的return语句
Dec 15 Javascript
javascript每日必学之基础入门
Feb 16 Javascript
jQuery操作动态生成的内容的方法
May 28 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
Aug 02 Javascript
基于JavaScript实现复选框的全选和取消全选
Feb 09 Javascript
JavaScript 数据类型详解
Mar 13 Javascript
详解vue移动端日期选择组件
Feb 22 Javascript
快速解决vue-cli不能初始化webpack模板的问题
Mar 20 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
Aug 12 Javascript
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
Sep 04 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的基本常识小结
2013/07/05 PHP
php获取随机数组列表的方法
2014/11/13 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
在模板页面的js使用办法
2010/04/01 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
原生js实现日历效果
2020/03/02 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
python编程嵌套函数实例代码
2018/02/11 Python
python程序封装为win32服务的方法
2021/03/07 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
Python使用进程Process模块管理资源
2020/03/05 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
购房协议书范本
2014/04/11 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
毕业论文评语大全
2014/04/29 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
2019幼儿教师求职信(3篇)
2019/09/20 职场文书