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的表格操作插件
Apr 22 Javascript
Javascript简单实现可拖动的div
Oct 22 Javascript
Angularjs制作简单的路由功能demo
Apr 14 Javascript
javascript获取网页宽高方法汇总
Jul 19 Javascript
javascript实现显示和隐藏div方法汇总
Aug 14 Javascript
jquery通过name属性取值的简单实现方法
Jun 20 Javascript
老生常谈jquery id选择器和class选择器的区别
Feb 12 Javascript
JQuery validate 验证一个单独的表单元素实例
Feb 17 Javascript
node下使用UglifyJS压缩合并JS文件的方法
Mar 07 Javascript
使用 vue-i18n 切换中英文效果
May 23 Javascript
vue监听用户输入和点击功能
Sep 27 Javascript
async/await让异步操作同步执行的方法详解
Nov 01 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中iconv函数使用方法
2008/05/24 PHP
php实现水仙花数示例分享
2014/04/03 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
一个网马的tips实现分析
2010/11/28 Javascript
js函数排序的实例代码
2013/07/01 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
js函数调用的方式
2014/05/06 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
理解JavaScript原型链
2016/10/25 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
python实现得到一个给定类的虚函数
2014/09/28 Python
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
python中的set实现不重复的排序原理
2018/01/24 Python
python用post访问restful服务接口的方法
2018/12/07 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
a标签下载链接的简单实现
2016/09/13 HTML / CSS
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
初二物理教学反思
2014/01/29 职场文书
客房部经理岗位职责
2015/02/02 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL