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 相关文章推荐
Javascript优化技巧(文件瘦身篇)
Jan 28 Javascript
Jquery操作Select 简单方便 一个js插件搞定
Nov 12 Javascript
IE6、IE7中获取Button元素的值的bug说明
Aug 28 Javascript
js实现拉伸拖动iframe的具体代码
Aug 03 Javascript
JS下拉缓冲菜单示例代码
Aug 30 Javascript
js实现下拉框选择要显示图片的方法
Feb 16 Javascript
JavaScript操作Cookie方法实例分析
May 27 Javascript
Jquery Ajax Error 调试错误的技巧
Nov 20 Javascript
Bootstrap警告(Alerts)的实现方法
Mar 22 Javascript
前端跨域的几种解决方式总结(推荐)
Aug 16 Javascript
JS+HTML5 canvas绘制验证码示例
Dec 05 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
Apr 30 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
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
JavaScript入门教程(5) js Screen屏幕对象
2009/01/31 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
JS跨域问题详解
2014/11/25 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
2016/09/19 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
javascript 构建模块化开发过程解析
2019/09/11 Javascript
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
语文高效课堂实施方案
2014/05/03 职场文书
小学班级口号
2014/06/09 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
社区活动总结
2015/02/04 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
日本十大血腥动漫,那些被禁播的动漫盘点
2022/03/21 日漫