面向对象轮播

/*
 面向对象的图片轮播,图片的最后一张是第一张图,图片的第一张是最后一张图,鼠标移入暂停轮播,可点击按钮和页码切换图片
 使用时需要获取一下对应的元素对象
 */
            
//            var outer = $("#outer");//获取最大的框
//            var oInner = $("#inner");//获取ul
//            var item = $("#inner li");//获取li
//            var leftBtn = $("#leftBtn");//获取左边按钮
//            var rightBtn = $("#rightBtn");//获取右边按钮
//            var pageList = $("#pageList");//获取页码的ul
//            var pageBtn = $("#pageList li");//获取也页码的li

function Lunbo(outer,oInner,item,leftBtn,rightBtn,pageList,pageBtn){
                this.outer = outer;
                this.oInner = oInner;
                this.item = item;
                this.leftBtn = leftBtn;
                this.rightBtn = rightBtn;
                this.pageList = pageList;
                this.pageBtn = pageBtn;
                this.pageNum = 1;
                this.autoPlay();
                this.pause();
                this.btn();
                this.pagination();
            }
            Lunbo.prototype.autoPlay = function(){
                var that = this;
                this.time = setInterval(function(){
                    that.pageChange(that);
                },3000);
            }
            Lunbo.prototype.pageChange = function(that){
                that.pageNum++;
                that.count();
            }
            Lunbo.prototype.count = function(fn){
                var start = parseInt(oGet.getStyle(this.oInner,"left"));
                var end = -this.pageNum*640;
                var step = (end - start)/100;
                if(fn){
                    this.move(start,end,step,fn);
                }else{
                    this.move(start,end,step);
                }
            }
            Lunbo.prototype.active = function(){
                for(var i=0;i<this.pageBtn.length;i++){
                    this.pageBtn[i].className = "";
                }
                this.pageBtn[this.pageNum-1].className = "active";
            }
            Lunbo.prototype.move = function(start,end,step,fn){
                var num = 0;
                var that = this;
                this.oInner.time = setInterval(function(){
                    start += step;
                    num++;
                    if(num==100){
                        clearInterval(that.oInner.time);
                        start = end;
                        if(step<0&&that.pageNum==that.item.length-1){
                            that.pageNum = 1;
                            start = -that.item[0].offsetWidth;
                        }else if(step>0&&that.pageNum==0){
                            that.pageNum = that.item.length-2;
                            start = -that.item[0].offsetWidth*that.pageNum;
                        }
                        if(fn){
                            fn();
                        }
                        that.active();
                    }
                    that.oInner.style.left = start + "px";
                })
            }
            Lunbo.prototype.pause = function(){
                var that = this;
                this.outer.onmouseover = function(){
                    clearInterval(that.time);
                    that.leftBtn.style.display = "block";
                    that.rightBtn.style.display = "block";
                }
                this.outer.onmouseout = function(){
                    that.autoPlay();
                    that.leftBtn.style.display = "";
                    that.rightBtn.style.display = "";
                }
            }
            Lunbo.prototype.btn = function(){
                var that = this;
                this.leftBtn.lock = true;
                this.rightBtn.lock = true;
                
                this.leftBtn.onclick = function(){
                    if(that.leftBtn.lock&&that.rightBtn.lock){
                        that.leftBtn.lock = false;
                        that.pageNum --;
                        that.count(function(){
                            that.leftBtn.lock = true;
                        });
                    }
                }
                this.rightBtn.onclick = function(){
                    if(that.leftBtn.lock&&that.rightBtn.lock){
                        that.rightBtn.lock = false;
                        that.pageNum ++;
                        that.count(function(){
                            that.rightBtn.lock = true;
                        });
                    }
                }
            }
            Lunbo.prototype.pagination = function(){
                var that = this;
                console.log(that.pageBtn)
                for(var i=0;i<this.pageBtn.length;i++){
                    this.pageBtn[i].index = i;
                    this.pageBtn[i].onclick = function(){
                        that.pageNum = this.index + 1;
                        that.count();
                    }
                }
            }
            //var newLunbo = new Lunbo(outer,oInner,item,leftBtn,rightBtn,pageList,pageBtn);

时间: 2024-11-18 08:07:54

面向对象轮播的相关文章

面向对象编程---图片轮播

今天复习了一下面向对象编程,下面是我的效果图 看着这个图片你会觉得这没有什么,那么上代码: html部分: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 ul,ol,li{padding:0;margin:0;li

基于面向对象的图片轮播(js原生代码)

无论你想走多远,你都需要不断地走下去.前端最精华的便是原生的js,这也是我们前端工程师的技术分层的重要指标,也提现这你的代码能力,开发的水平.废话不多说,进入今天的主要分享----基于面向对象思想的图片轮播.其效果如下所示: 正如图片所示这样我们要实现的效果,这里与我们以往不同的是我们的布局十分简洁.其中html布局如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset

js面向对象实现图片轮播插件

这个demo的学习过程很值得记录下来. 前言:学习了一遍js的面向对象,想找点东西练练手,就上网找了个用js面向对象实现图片轮播插件: http://www.codefans.net/jscss/code/3327.shtml 功能:新建一个实例就是一个图片轮播,可以新建多个,但是实例与实例之间是干扰的. 过程:看视频教程说,第一次搞面向对象,把面向过程改头换面就可以了.自己就死磕地先写了原生,再改为面向对象. 写原生的时候,遇到的问题: 不知道怎么样停止计时器:clearInterval.cl

原生JS面向对象思想封装轮播图组件

原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能实现都分别分为不同的模块.目前我封装的这个版本还不适配移动端,只适配PC端. 主要的功能有:自动轮播,点击某一张图片对应的小圆点就跳转到指定图片,有前后切换按钮.使用的时候只需要传入图片的路径以及每张图片分别所对应的跳转路径还有目标盒子ID就可以了,还可以自定义每张图轮播的延时,不过延时参数不是必须

原生js面向对象实现简单轮播

平时中我习惯用jquery写轮播效果,实现过程不是很难,也很方便,为了加深对js面向对象的理解,我打算用面向对象实现一个简单的轮播,这里采用了字面量的方式实现.为了实现这个过程,我们要自己动手封装一个运动函数animate,在这里我采用的是匀速运动的方式,这种方式可能体验不是很好,后面分析js代码我在详细解释.废话不多说,先上代码.页面布局可以根据自己的习惯来. html代码: <head> <meta charset="UTF-8"> <meta nam

如何用面向对象的思维去封装一个小型轮播图插件

1.面向对象与面向过程 既然说到面向对象的思维,那就免不了要对面向过程的编程思维与面向对象的思维做一番比较. 笔者有 一段时间天真的认为有一个类,然后new一个对象就是面向对象编程了,现在想想还是太naive了呀. 其实面向对象的编程思维和面向过程的编程思维重要的不是对象和过程,而是思维. 比如说在生活中我们要做一道西红柿炒鸡蛋,很多人的第一反应就是西红柿炒鸡蛋第一步.第二步.第三步应该怎么做,每一步放什么调料.然后在做的过程中找每一步需要的调料.这就是很典型的面向过程的思维方式:怎么做,需要什

面向对象 实现轮播组件

以面向对象的方式实现无线轮播效果组件预览地址:https://evenyao.github.io/carousel-jQuery/ 逻辑图 我们的demo轮播为四张图,如有多张图,逻辑是一样的 当初始化之前,CSS中如果撤除 overflow: hidden; ,即可看到该样式,即四张图排列在一起(此时容器的宽度已经通过JS计算得到) 初始化之后,在第1张图之前添加一张图4,在第4张图之后添加一张图1(即最后一张图添加第一张图,第一张图添加最后一张图) 当 nextBtn 被点击的时候,向右移

面向对象实现多图轮播效果

1.静态页面的搭建 1 <body> 2 <div class="wrap" id="wrap"> 3 <div id="wrap_bg"> 4 <ul> 5 <li><img src="image/img_bg/img_bg_5.jpg"></img></li> 6 <li><img src="imag

面向对象的轮播js

1.自执行函数的前后要加分号 案例: ;(function(){})(); 2.面向对象的最大优势节省了许多内存 正式开写面向对象的轮播: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>面向对象的轮播</title> <style> .slide{ width:600px; height:400px; margin:100px a