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 题型问答有答案参考
Feb 17 Javascript
js点击页面其它地方将某个显示的DIV隐藏
Jul 12 Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
Jan 13 Javascript
了不起的node.js读书笔记之例程分析
Dec 22 Javascript
js实现星星打分效果的方法
Jul 05 Javascript
react-router实现跳转传值的方法示例
May 27 Javascript
jQuery validata插件实现方法
Jun 25 jQuery
Vue.js 2.5新特性介绍(推荐)
Oct 24 Javascript
对vue中v-if的常见使用方法详解
Sep 28 Javascript
利用JS代码自动删除稿件的普通弹幕功能
Sep 20 Javascript
node.js使用fs读取文件出错的解决方案
Oct 23 Javascript
JavaScript 防篡改对象的用法示例
Apr 24 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
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
JQuery live函数
2010/12/24 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
详解JavaScript的变量
2019/04/04 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
python实现封装得到virustotal扫描结果
2014/10/05 Python
Python之列表的插入&amp;替换修改方法
2018/06/28 Python
python推导式的使用方法实例
2021/02/28 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
美国环保妈妈、儿童和婴儿用品购物网站:The Tot
2019/11/24 全球购物
2014村书记党建工作汇报材料
2014/11/02 职场文书
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技