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 相关文章推荐
网页自动跳转代码收集
Sep 27 Javascript
在多个页面使用同一个HTML片段《续》
Mar 04 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
May 04 Javascript
DOM基础教程之使用DOM设置文本框
Jan 20 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
Mar 02 Javascript
js+ajax实现获取文件大小的方法
Dec 08 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
May 20 Javascript
清除浏览器缓存的几种方法总结(必看)
Dec 09 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
Aug 11 Javascript
JS实现的简单分页功能示例
Aug 23 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
May 31 Javascript
vuex + keep-alive实现tab标签页面缓存功能
Oct 17 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基础知识:类与对象(1)
2006/12/13 PHP
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
PHP添加图片水印、压缩、剪切的封装类
2015/08/17 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
python的id()函数解密过程
2012/12/25 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
使用Python实现音频双通道分离
2020/12/25 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
学院书画协会部门岗位职责
2013/12/01 职场文书
学生会主席就职演讲稿
2014/01/14 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB
Python IO文件管理的具体使用
2022/03/20 Python