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下操作HTML控件的实现代码
Jan 12 Javascript
jQuery中noconflict函数的实现原理分解
Feb 03 Javascript
Webpack 实现 AngularJS 的延迟加载
Mar 02 Javascript
jQuery绑定事件的几种实现方式
May 09 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
Jun 24 Javascript
AngularJS基础 ng-repeat 指令简单示例
Aug 03 Javascript
jQuery点击导航栏选中更换样式的实现代码
Jan 23 Javascript
详解Angular.js中$http拦截器的介绍及使用
Jul 04 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
Jul 05 Javascript
JavaScript实现图片切换效果
Aug 12 Javascript
vue data变量相互赋值后被实时同步的解决步骤
Aug 05 Javascript
vue实现简易音乐播放器
Aug 14 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
星际原理概述
2020/03/04 星际争霸
聊天室php&amp;mysql(四)
2006/10/09 PHP
windows xp下安装pear
2006/12/02 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
jquery获取div距离窗口和父级dv的距离示例
2013/10/10 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
jquery结合CSS使用validate实现漂亮的验证
2015/01/29 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
Angular2 自定义表单验证器的实现方法
2018/12/14 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
Python实现的递归神经网络简单示例
2017/08/11 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
计算机专业毕业生的自我评价
2013/11/18 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
科技活动总结范文
2015/05/11 职场文书
排球赛新闻稿
2015/07/17 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL