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 相关文章推荐
jquery模拟SELECT下拉框取值效果
Oct 23 Javascript
jQuery中get()方法用法实例
Dec 27 Javascript
JavaScript中的数组特性介绍
Dec 30 Javascript
JavaScript中对象介绍
Dec 31 Javascript
Underscore.js 1.3.3 中文注释翻译说明
Jun 25 Javascript
Node.js如何自动审核团队的代码
Jul 20 Javascript
Angular中实现树形结构视图实例代码
May 05 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
Nov 15 Javascript
JS伪继承prototype实现方法示例
Jun 20 Javascript
Vue中 key keep-alive的实现原理
Sep 18 Javascript
vue监听dom大小改变案例
Jul 29 Javascript
React Native项目框架搭建的一些心得体会
May 28 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHP strtok()函数的优点分析
2010/03/02 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
thinkPHP中钩子的两种配置调用方法详解
2016/11/11 PHP
Django 中 cookie的使用
2017/08/17 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
Python 可视化神器Plotly详解
2020/12/26 Python
Django实现简单的分页功能
2021/02/22 Python
实习销售业务员自我鉴定
2013/09/21 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
代办委托书怎么写
2014/08/01 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
超市收银员岗位职责
2015/04/07 职场文书
电视新闻稿
2015/07/17 职场文书
app场景下uniapp的扫码记录
2022/07/23 Java/Android