您的位置首页生活百科

js如何制作图片轮播

js如何制作图片轮播

的有关信息介绍如下:

js如何制作图片轮播

幻灯片效果是网站中常见的一种效果,网络上也有非常多的轮播器效果,特别是以jquery插件实现,但是对于前端开发人员来说,特别是学习js的程序员来说,这个是必需掌据的一门技术。

编写基本的样

获取文档对象

以id获取文档对象

$id:function(id){return document.getElementById(id);},

//以标签名获取文档对象

$tag:function(tagName,obj){return (obj ?obj : document).getElementsByTagName(tagName); },

以class获取文档对象

$c:function (claN,obj){

var tag = $tag('*'),reg = new RegExp('(^|\\s)'+claN+'(\\s|$)'),arr=[];

for(var i=0;i

if (reg.test(tag[i].className)){

arr.push(tag[i]);

}

}

return arr;

}

添加和移除class

$add:function(obj,claN){

reg = new RegExp('(^|\\s)'+claN+'(\\s|$)');

if (!reg.test(obj.className)){

obj.className += ' '+claN;

}

},

//移除classs

$remve:function(obj,claN){var cla=obj.className,reg="/\\s*"+claN+"\\b/g";obj.className=cla?cla.replace(eval(reg),''):''},

css获取方法

css:function(obj,attr,value){

if(value){

obj.style[attr] = value;

}else{

return typeof window.getComputedStyle != 'undefined' ? window.getComputedStyle(obj,null)[attr] : obj.currentStyle[attr];

}

},

常用的easing方法

easing ={

linear:function(t,b,c,d){return c*t/d + b;},

swing:function(t,b,c,d) {return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;},

easeIn:function(t,b,c,d){return c*(t/=d)*t*t*t + b;},

easeOut:function(t,b,c,d){return -c*((t=t/d-1)*t*t*t - 1) + b;},

easeInOut:function(t,b,c,d){return ((t/=d/2) < 1)?(c/2*t*t*t*t + b):(-c/2*((t-=2)*t*t*t - 2) + b);}

}

初始化

config:{

index:0,

auto:true,

direct:'left' //滚动方向,left,top,

},

init:function(){

this.slide = this.$id('slide');

this.img_div = this.$c('img-div'),

this.slide_btn = this.$tag('a',this.$c('slide-btn'));

this.img_arr = this.$tag('img',this.img_div);

if(this.config.auto) this.play();//是否自动播放

this.hover();//绑定导航悬停切换。即mouseover,mouseout事件

},

动画效果

animate:function(obj,attr,val){

var d = 1000;//动画时间一秒完成。

if(obj[attr+'timer']) clearInterval(obj[attr+'timer']);

var start = parseInt(zBase.css(obj,attr));//动画开始位置

//space = 动画结束位置-动画开始位置,即动画要运动的距离。

var space = val- start,st=(new Date).getTime(),m=space>0? 'ceil':'floor';

obj[attr+'timer'] = setInterval(function(){

var t=(new Date).getTime()-st;//表示运行了多少时间,

if (t < d){//如果运行时间小于动画时间

zBase.css(obj,attr,Math[m](zBase.easing['easeOut'](t,start,space,d)) +'px');

}else{

clearInterval(obj[attr+'timer']);

zBase.css(obj,attr,val+'px');

}

},20);

},

导航切换

hover:function(){

for(var i=0;i

this.slide_btn[i].index = i;

this.slide_btn[i].onmouseover = function(){

if(zBase.slide.timer) clearInterval(zBase.slide.timer);

zBase.config.index =this.index;

for(var j=0;j

zBase.$remve(zBase.slide_btn[j],'hover') ;

}

zBase.$add(zBase.slide_btn[zBase.config.index],'hover');

zBase.animate(zBase.img_div,zBase.config.direct,-zBase.config.index*500);//500是轮播器的大小,当前索引乘以500,再取负,就是轮播器要滚动f到的位置。

}

this.slide_btn[i].onmouseout = function(){

zBase.play();

}

}

},

自动播放

play:function(){

this.slide.timer = setInterval(function(){

zBase.config.index++;

if(zBase.config.index>=zBase.img_arr.length) zBase.config.index=0;

zBase.animate(zBase.img_div,zBase.config.direct,-zBase.config.index*500);

for(var j=0;j

zBase.$remve(zBase.slide_btn[j],'hover') ;

}

zBase.$add(zBase.slide_btn[zBase.config.index],'hover');

},3000)

},

调用代码

zBase.init();