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 相关文章推荐
js几个不错的函数 $$()
Oct 09 Javascript
Javascript操纵Cookie实现购物车程序
Feb 15 Javascript
Js 订制自己的AlertBox(信息提示框)
Jan 09 Javascript
JQuery 操作Javascript对象和数组的工具函数小结
Jan 22 Javascript
js修改地址栏URL参数解决url参数问题
Dec 15 Javascript
jQuery实现div浮动层跟随页面滚动效果
Feb 11 Javascript
jQuery移除元素自动解绑事件实现思路及代码
May 31 Javascript
jQuery根据表单name获取值的方法
May 24 Javascript
JS实现title标题栏文字不间断滚动显示效果
Sep 07 Javascript
Javascript中引用类型传递的知识点小结
Mar 06 Javascript
基于Vue 实现一个中规中矩loading组件
Apr 03 Javascript
webpack介绍使用配置教程详解webpack介绍和使用
Jun 25 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面向对象 字段的声明与使用
2012/06/14 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
react路由配置方式详解
2017/08/07 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
vue脚手架及vue-router基本使用
2018/04/09 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
python连接oracle数据库实例
2014/10/17 Python
python奇偶行分开存储实现代码
2018/03/19 Python
python实现文件的分割与合并
2019/08/29 Python
Django框架请求生命周期实现原理
2020/11/13 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
部队万能检讨书
2014/02/20 职场文书
技能竞赛活动方案
2014/02/21 职场文书
大学军训感言300字
2014/03/09 职场文书
质量承诺书范文
2014/03/27 职场文书
计生专干事迹
2014/05/28 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
借名购房协议书范本
2014/10/06 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
单位接收证明格式
2015/06/18 职场文书
学习雷锋主题班会
2015/08/14 职场文书
五年级语文教学反思
2016/03/03 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang