/*! * touchslide v1.1 * javascript触屏滑动特效插件,移动端滑动特效,触屏焦点图,触屏tab切换,触屏多图切换等 * 详尽信息请看官网:http://www.superslide2.com/touchslide/ * * copyright 2013 大话主席 * * 请尊重原创,保留头部版权 * 在保留版权的前提下可应用于个人或商业用途 * 1.1 宽度自适应(修复安卓横屏时滑动范围不变的bug) */ var touchslide = function(a){ a = a||{}; var opts = { slidecell:a.slidecell || "#touchslide", //运行效果主对象,必须用id!,例如 slidecell:"#touchslide" titcell:a.titcell || ".hd li", // 导航对象,当自动分页设为true时为“导航对象包裹层” maincell:a.maincell || ".bd", // 切换对象包裹层 effect:a.effect || "left", // 效果,支持 left、leftloop autoplay:a.autoplay || false, // 自动播放 delaytime:a.delaytime || 200, // 效果持续时间 intertime:a.intertime ||2500, // 自动运行间隔 defaultindex:a.defaultindex ||0, // 默认的当前位置索引。0是第一个; defaultindex:1 时,相当于从第2个开始执行 titonclassname:a.titonclassname ||"on", // 当前导航对象添加的classname autopage:a.autopage || false, // 自动分页,当为true时titcell为“导航对象包裹层” prevcell:a.prevcell ||".prev", // 前一页按钮 nextcell:a.nextcell ||".next", // 后一页按钮 pagestatecell:a.pagestatecell ||".pagestate", // 分页状态对象,用于显示分页状态,例如:2/3 pnloop:a.pnloop=='undefined '?true:a.pnloop , // 前后按钮点击是否继续执行效果,当为最前/后页是会自动添加“prevstop”/“nextstop”控制样色 startfun:a.startfun || null, // 每次切换效果开始时执行函数,用于处理特殊情况或创建更多效果。用法 satrtfun:function(i,c){ }; 其中i为当前分页,c为总页数 endfun:a.endfun || null, // 每次切换效果结束时执行函数,用于处理特殊情况或创建更多效果。用法 endfun:function(i,c){ }; 其中i为当前分页,c为总页数 switchload:a.switchload || null //每次切换效果结束时执行函数,用于处理特殊情况或创建更多效果。用法 endfun:function(i,c){ }; 其中i为当前分页,c为总页数 } var slidecell = document.getelementbyid(opts.slidecell.replace("#","")); if( !slidecell ) return false; //简单模拟jquery选择器 var obj = function(str,parele){ str = str.split(" "); var par = []; parele = parele||document; var retn = [ parele ] ; for( var i in str ){ if(str[i].length!=0) par.push(str[i]) } //去掉重复空格 for( var i in par ){ if( retn.length==0 ) return false; var _retn = []; for ( var r in retn ) { if( par[i][0] =="#" ) _retn.push( document.getelementbyid( par[i].replace("#","") ) ); else if( par[i][0] =="." ){ var tag = retn[r].getelementsbytagname('*'); for( var j=0; j" } } else{ for( var i=0; i'); conbox.style.csstext="width:"+tempsize*slidew+"px;"+"position:relative;overflow:hidden;padding:0;margin:0;"; for ( var i =0; i= navobjsize) { index = istouch?index-1:0; } else if( index < 0) { index = istouch?0:navobjsize-1; } if( sload!=null ){ doswitchload(0) } translate( (-index*slidew),delaytime ); oldindex=index; break; case "leftloop": if( sload!=null ){ doswitchload(0) } translate( -(index+1)*slidew ,delaytime ); if ( index==-1){ timeout= settimeout( function(){ translate( -navobjsize*slidew ,0 ); }, delaytime ); index = navobjsize-1; } else if( index==navobjsize ){ timeout= settimeout( function(){ translate( -slidew ,0 ); }, delaytime ); index = 0; } oldindex=index; break;// leftloop end }//switch end dostartfun(); endtimeout= settimeout( function(){ doendfun() }, delaytime ); //设置classname for ( var i=0; i/"+navobjsize; } };// doplay end //初始化执行 doplay(); //自动播放 if (autoplay) { inter=setinterval(function(){ index++; doplay() }, intertime); } //点击事件 if( navobj ){ for ( var i=0; i 1 || e.scale && e.scale !== 1) return }; //多点或缩放 var point = hastouch ? e.touches[0] : e; distx = point.pagex-startx; disty = point.pagey-starty; if ( typeof scrolly == 'undefined') { scrolly = !!( scrolly || math.abs(distx) < math.abs(disty) ); } if( !scrolly ){ e.preventdefault(); if(autoplay){clearinterval(inter) } switch (effect){ case "left": if( (index==0 && distx>0) || (index>=navobjsize-1&&distx<0 )){ distx=distx*0.4 } translate( -index*slidew+distx ,0 ); break; case "leftloop":translate( -(index+1)*slidew+distx ,0 );break; } if( sload!=null && math.abs(distx)>slidew/3 ){ doswitchload( distx>-0?-1:1 ) } } } //触摸结束函数 var tend = function(e){ if(distx==0) return; e.preventdefault(); if( !scrolly ) { if( math.abs(distx) > slidew/10 ){ distx>0? index--: index++; } doplay( true ); if (autoplay) { inter=setinterval(function(){ index++; doplay() }, intertime); } } conbox.removeeventlistener(touchmove, tmove, false); conbox.removeeventlistener(touchend, tend, false); } //添加“触摸开始”事件监听 conbox.addeventlistener(touchstart, tstart ,false); }// touchslide e