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 相关文章推荐
editable.js 基于jquery的表格的编辑插件
Oct 24 Javascript
JS中的substring和substr函数的区别说明
May 07 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
Jun 04 Javascript
Vue数据驱动模拟实现5
Jan 13 Javascript
原生js实现无限循环轮播图效果
Jan 20 Javascript
js构建二叉树进行数值数组的去重与优化详解
Mar 26 Javascript
js中位运算的运用实例分析
Dec 11 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
May 30 Javascript
详解从vue-loader源码分析CSS Scoped的实现
Sep 23 Javascript
JS实现TITLE悬停长久显示效果完整示例
Feb 11 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
May 09 Javascript
javascript实现支付宝滑块验证码效果
Jul 24 Javascript
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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
PHP 数组基础知识小结
2010/08/20 PHP
php遍历数组的方法分享
2012/03/22 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
Grid得到选择行数据的方法总结
2011/01/17 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
vue 使用post/get 下载导出文件操作
2020/08/07 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
Python3基础之函数用法
2014/08/13 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
使用tensorflow实现线性svm
2018/09/07 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
pandas apply多线程实现代码
2020/08/17 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
视光学专业毕业生推荐信
2013/10/28 职场文书
老员工辞职信范文
2015/05/12 职场文书
2015年共青团工作总结
2015/05/15 职场文书
中学教师读书笔记
2015/07/01 职场文书
资产移交协议书
2016/03/24 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang
python flappy bird小游戏分步实现流程
2022/02/15 Python