轮播图组件js代码
本文实例为大家分享了JavaScript轮播图组件代码,供大家参考,具体内容如下
//轮播图组件
functionRolling(o){
this.index=++o.index||1;//当前滚动的位置,当index大于可轮播的次数listLength或者等于0,为不可滚动状态
this.num=o.num||1;//默认滚动一个列表
this.obj=o.obj||null;//要轮播的对象ul
this.perObj=o.perObj||null;//向上翻页的按钮对象
this.nextObj=o.nextObj||null;//向下翻页的按钮对象
this.focusPoint=o.focusPoint||null;//焦点对象,默认为null。意思不开启焦点对象,如要开启可传入焦点对象可自动开启
this.focusClass=o.focusClass||'mien-active';//当前焦点位置类名
this.replaceBtn=o.replaceBtn||false;//是否在轮播到第一页或最后一页时替换翻页按钮图片。默认值为true,并替换按钮图片为re+图片名。如:per.png替换成re-per.ping
console.log(o.replaceBtn)
this.listLength=Math.ceil(o.obj.find('li').length/this.num);//可轮播的次数
this.listObj=o.obj.children('li');
this.listWidth=this.listObj.width()+parseInt(this.listObj.css('margin-left'))+parseInt(this.listObj.css('margin-right'));//列表宽度
this.init();//初始化
};
Rolling.prototype.init=function(){
varthisObj=this;
this.initLeft();
this.replaceFun();
if(this.focusPoint!==null){
this.createFocusPoint();
}
this.perObj.unbind('click').on('click',function(){
thisObj.rollPrev();
});
this.nextObj.unbind('click').on('click',function(){
thisObj.rollNext();
});
}
//创建焦点,并给当前位置的焦点添加类mien-active
Rolling.prototype.createFocusPoint=function(){
varstr='',
thisObj=this;
for(vari=0;i<this.listLength;i++){
if(i==this.index-1){
str+='<liclass="'+this.focusClass+'"></li>';
}else{
str+='<li></li>';
}
}
this.focusPoint.append(str);
this.focusPoint.children().click(function(){
varoldIndex=$('.'+thisObj.focusClass).index()+1;//之前的焦点位置
varindex=$(this).index()+1;//当前点击的焦点
varsum=index-oldIndex;
varperObject=thisObj.perObj.find('img');
varnextObject=thisObj.nextObj.find('img');
if(index==1&&!thisObj.replaceBtn){
perObject.attr('src',perObject.attr('data-src'));
nextObject.attr('src',nextObject.attr('data-src'));
}elseif(index==thisObj.listLength&&!thisObj.replaceBtn){
perObject.attr('src',perObject.attr('re-src'));
nextObject.attr('src',nextObject.attr('re-src'));
}elseif(!thisObj.replaceBtn){
perObject.attr('src',perObject.attr('re-src'));
nextObject.attr('src',nextObject.attr('data-src'));
}
thisObj.index+=sum;
if(sum>0){
thisObj.obj.animate({
marginLeft:'-='+Math.abs(sum)*thisObj.num*thisObj.listWidth+'px'
});
}
if(sum<0){
thisObj.obj.animate({
marginLeft:'+='+Math.abs(sum)*thisObj.num*thisObj.listWidth+'px'
});
}
$(this).addClass(thisObj.focusClass).siblings().removeClass(thisObj.focusClass);
});
}
Rolling.prototype.initLeft=function(){
if(this.index==1){
return;
}
this.obj.css('margin-left',-(this.index-1)*this.listWidth);//初始化全屏图片显示的位置
}
Rolling.prototype.rollPrev=function(){
--this.index;
//当点击到第一页就return
if(this.index<=1&&!this.replaceBtn){
this.perObj.find('img').attr('src',this.perObj.find('img').attr('data-src'));
}
if(!this.thisIndex()){
++this.index;
return;
}
if(!this.replaceBtn){
this.nextObj.find('img').attr('src',this.nextObj.find('img').attr('data-src'));
}
this.obj.animate({
marginLeft:'+='+this.num*this.listWidth+'px'
});
if(this.focusPoint!==null){
$('.'+this.focusClass).removeClass(this.focusClass).prev().addClass(this.focusClass);
}
}
Rolling.prototype.rollNext=function(){
++this.index;
if(this.index==this.listLength&&!this.replaceBtn){
this.nextObj.find('img').attr('src',this.nextObj.find('img').attr('re-src'));
}
//当点击到最后一页就return
if(!this.thisIndex()){
--this.index;
return;
}
if(!this.replaceBtn){
this.perObj.find('img').attr('src',this.perObj.find('img').attr('re-src'));
}
this.obj.animate({
marginLeft:'-='+this.num*this.listWidth+'px'
});
if(this.focusPoint!==null){
$('.'+this.focusClass).removeClass(this.focusClass).next().addClass(this.focusClass);
}
}
Rolling.prototype.replaceFun=function(){
varperObject=this.perObj.find('img'),
nextObject=this.nextObj.find('img');
varperSrc=perObject.attr('src'),
nextSrc=nextObject.attr('src');
perObject.attr({'data-src':perSrc,'re-src':this.splitSrc(perSrc)});
nextObject.attr({'data-src':nextSrc,'re-src':this.splitSrc(nextSrc)});
}
Rolling.prototype.splitSrc=function(str){
varlist=str.split('/');
vardata=list[list.length-1];
varsub=data.substr(0,data.indexOf('.'));
returnstr.replace(sub,'re-'+sub);
}
Rolling.prototype.thisIndex=function(){
if(this.index>this.listLength|this.index<=0){
returnfalse;
}
returntrue;
}
functioncreateRolling(o){
returnnewRolling(o);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
5 短祝福语简短暖心
10 结婚祝福语粤语大全简短
11 晚上祝福语女生文案简短
12 法语妈妈生日祝福语简短
13 药厂开工祝福语大全简短
14 蛋糕节日祝福语简短英文
15 跨年的生日祝福语简短
16 文案祝福语英文短句简短
17 在家聚餐婚礼祝福语简短
18 学生节祝福语大全简短