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(DHTML)中的一些技巧
Jan 09 Javascript
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
Dec 25 Javascript
谷歌浏览器 insertCell与appendChild的区别
Feb 12 Javascript
Javascript 面向对象编程(coolshell)
Mar 18 Javascript
xml转json的js代码
Aug 28 Javascript
Bootstrap每天必学之基础排版
Nov 20 Javascript
javascript html实现网页版日历代码
Mar 08 Javascript
Javascript之String对象详解
Jun 08 Javascript
原生js的RSA和AES加密解密算法
Oct 08 Javascript
JavaScript运动框架 链式运动到完美运动(五)
May 18 Javascript
详解vue挂载到dom上会发生什么
Jan 20 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
Oct 31 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
3.从实例开始
2006/10/09 PHP
PHP4实际应用经验篇(7)
2006/10/09 PHP
php常用ODBC函数集(详细)
2013/06/24 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
js 浮动层菜单收藏
2009/01/16 Javascript
javascript 触发事件列表 比较不错
2009/09/03 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
jQuery插件 tabBox实现代码
2010/02/09 Javascript
jquery 新浪网易的评论块制作
2010/07/01 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
移动端效果之IndexList详解
2017/10/20 Javascript
vue中如何使用ztree
2018/02/06 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
python实现字符串和日期相互转换的方法
2015/05/13 Python
python字符串string的内置方法实例详解
2018/05/14 Python
python set集合使用方法解析
2019/11/05 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
美国派对用品及装饰品网上商店:Shindigz
2016/07/30 全球购物
岗位聘任书范文
2014/03/29 职场文书
读书活动总结范文
2014/04/26 职场文书
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL
一文简单了解MySQL前缀索引
2022/04/03 MySQL
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle