JavaScript基于面向对象实现的无缝滚动轮播示例


Posted in Javascript onJanuary 17, 2020

本文实例讲述了JavaScript基于面向对象实现的无缝滚动轮播。分享给大家供大家参考,具体如下:

无缝轮播 面向对象

一、HTML及CSS部分同前文《原生JavaScript实现的无缝滚动功能》。

JavaScript面向对象部分如下:

function Seamless(obj) {
  this.obj = document.getElementById(obj);
  this.oXSlide = GLOBAL.Dom.getElementsByClassName('J_XSlide', this.obj)[0];
  this.li = this.oXSlide.getElementsByTagName('li');
  this.liTabs = GLOBAL.Dom.getElementsByClassName('tabs', this.obj)[0].getElementsByTagName('li');
  this.iNow = 0;
  this.timer = null;
  this.playTime = 2000;
  this.init();
}
Seamless.prototype = {
  // 初始化
  init: function() {
    var _this = this;
    this.timer = setInterval(function(){
      _this.autoPlay();
    }, this.playTime);
    this.overOut();
    this.tab();
  },
  tab: function() {
    var _this = this;
    var btn = GLOBAL.Dom.getElementsByClassName('btn', this.obj);
    this.oXSlide.style.width = this.li.length * this.li[0].offsetWidth + 'px';
    for(var i = 0, len = this.liTabs.length; i < len; i++) {
      this.liTabs[i].index = i;
      GLOBAL.Event.addHandler(this.liTabs[i], 'mouseover', function() {
        _this.showItem(this.index);
      });
    }
    GLOBAL.Event.addHandler(btn[0], 'click', function() {
      _this.moveLeft();
    });
    GLOBAL.Event.addHandler(btn[1], 'click', function() {
      _this.moveRight();
    });
  },
  // 移入移出时,轮播暂停与开始
  overOut: function() {
    var _this = this;
    GLOBAL.Event.addHandler(this.obj, 'mouseover', function() {
      clearInterval(_this.timer);
    });
    GLOBAL.Event.addHandler(this.obj, 'mouseout', function() {
      _this.timer = setInterval(function() {
        _this.autoPlay();
      }, _this.playTime);
    });
  },
  autoPlay: function() {
    this.moveRight();
  },
  // 选项卡
  showItem:function (n) {
    for(var i = 0, len = this.liTabs.length; i < len; i++) {
      this.liTabs[i].className = 'tab';
    }
    if(n == this.liTabs.length) {
      this.liTabs[0].className = 'tab cur';
    }
    else {
      this.liTabs[n].className = 'tab cur';
    }
    startMove(this.oXSlide, {'left': -n * this.li[0].offsetWidth});
  },
  moveLeft:function () {
    this.iNow--;
    if(this.iNow == -1) {
      this.oXSlide.style.left = -this.liTabs.length * this.li[0].offsetWidth + 'px';
      this.iNow = this.liTabs.length - 1;
    }
    this.showItem(this.iNow);
  },
  moveRight:function () {
    this.iNow++;
    if(this.iNow == this.li.length) {
      this.oXSlide.style.left = 0;
      this.iNow = 1;
    }
    this.showItem(this.iNow);
  }
};
new Seamless('box');

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Js 弹出框口并返回值的两种常用方法
Dec 30 Javascript
Windows8下搭建Node.js开发环境教程
Sep 03 Javascript
javascript复制粘贴与clipboardData的使用
Oct 16 Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 Javascript
详解VUE的状态控制与延时加载刷新
Mar 27 Javascript
ES6新特性三: Generator(生成器)函数详解
Apr 21 Javascript
angularjs实现上拉加载和下拉刷新数据功能
Jun 12 Javascript
React Native之TextInput组件解析示例
Aug 22 Javascript
JS实现简单的表格增删
Jan 16 Javascript
VUE中使用HTTP库Axios方法详解
Feb 05 Javascript
前端性能优化建议
Sep 17 Javascript
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
JS面向对象之单选框实现
Jan 17 #Javascript
原生JavaScript实现的无缝滚动功能详解
Jan 17 #Javascript
vuejs中父子组件之间通信方法实例详解
Jan 17 #Javascript
React Hooks 实现和由来以及解决的问题详解
Jan 17 #Javascript
详解搭建一个vue-cli的移动端H5开发模板
Jan 17 #Javascript
jQuery实现王者荣耀手风琴效果
Jan 17 #jQuery
JS实现transform实现扇子效果
Jan 17 #Javascript
You might like
用PHP发电子邮件
2006/10/09 PHP
几个学习PHP的网址
2006/11/25 PHP
php中mt_rand()随机数函数用法
2014/11/24 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
在视频前插入广告
2006/11/20 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
python多线程抽象编程模型详解
2019/03/20 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
2014两会学习心得:时代的发展
2014/03/17 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
小学生安全教育心得体会
2016/01/15 职场文书
《折线统计图》教学反思
2016/02/22 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python
Go获取两个时区的时间差
2022/04/20 Golang