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中IE浏览器不支持NEW DATE()带参数的解决方法
Mar 01 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
Dec 11 Javascript
通过正则表达式实现表单验证是否为中文
Feb 18 Javascript
JS实现进入页面时渐变背景色的方法
Feb 25 Javascript
javascript中CheckBox全选终极方案
May 20 Javascript
angular基于路由控制ui-router实现系统权限控制
Sep 27 Javascript
DOM 事件的深入浅出(二)
Dec 05 Javascript
jquery获取下拉框中的循环值
Feb 08 Javascript
Angular2整合其他插件的方法
Jan 20 Javascript
JavaScript继承与聚合实例详解
Jan 22 Javascript
[原创]微信小程序获取网络类型的方法示例
Mar 01 Javascript
js canvas实现五子棋小游戏
Jan 22 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
隐藏你的.php文件的实现方法
2007/03/19 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
简单的php文件上传(实例)
2013/10/27 PHP
php字符串截取函数用法分析
2014/11/25 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
WEB开发之注册页面验证码倒计时代码的实现
2016/12/15 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
用Python设计一个经典小游戏
2017/05/15 Python
python 用下标截取字符串的实例
2018/12/25 Python
深入了解Django中间件及其方法
2019/07/26 Python
python之yield和Generator深入解析
2019/09/18 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
基于Python正确读取资源文件
2020/09/14 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
视光学毕业生自荐书范文
2014/02/13 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
工资证明格式模板
2015/06/12 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript
Consul在linux环境的集群部署
2022/04/08 Servers