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 02 Javascript
onsubmit阻止form表单提交与onclick的相关操作
Sep 03 Javascript
node.js中的buffer.copy方法使用说明
Dec 14 Javascript
详解Javascript模板引擎mustache.js
Jan 20 Javascript
Angular设置title信息解决SEO方面存在问题
Aug 19 Javascript
js微信支付实现代码
Dec 22 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
Feb 12 Javascript
jQuery实现页面倒计时并刷新效果
Mar 13 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
Apr 22 Javascript
vue组件父子间通信之综合练习(聊天室)
Nov 07 Javascript
vue axios整合使用全攻略
May 24 Javascript
vue 翻页组件vue-flip-page效果
Feb 05 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 php_openssl.dll的作用
2013/07/01 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
php中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
js实现的tab标签切换效果代码分享
2015/08/25 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
2017/01/03 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
使用SAE部署Python运行环境的教程
2015/05/05 Python
Python切片索引用法示例
2018/05/15 Python
pandas带有重复索引操作方法
2018/06/08 Python
详解python之协程gevent模块
2018/06/14 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
促销活动总结怎么写
2014/06/25 职场文书
自动化专业大学生职业生涯规划范文:爱拚才会赢
2014/09/12 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书