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 相关文章推荐
让广告代码不再影响你的网页加载速度
Jul 07 Javascript
Js冒泡事件详解及阻止示例
Mar 21 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
Mar 13 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
May 26 Javascript
对于Javascript 执行上下文的全面了解
Sep 05 Javascript
利用ES6实现单例模式及其应用详解
Dec 09 Javascript
解析Vue.js中的组件
Feb 02 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
Mar 05 Javascript
重学JS 系列:聊聊继承(推荐)
Apr 11 Javascript
node express使用HTML模板的方法示例
Aug 22 Javascript
微信小程序登录时如何获取input框中的内容
Dec 04 Javascript
用JS实现飞机大战小游戏
Jun 09 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
ASP知识讲座四
2006/10/09 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
jquery获取div距离窗口和父级dv的距离示例
2013/10/10 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
微信小程序中setInterval的使用方法
2017/09/29 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
python多线程同步实例教程
2019/08/11 Python
python web框架 django wsgi原理解析
2019/08/20 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
银行实习的自我鉴定
2013/12/10 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
预备党员个人总结
2015/02/14 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL