//滚动图片构造函数 function scroller(ch,t){//轮播图(对象ID,间歇秒数) var o1=document.getElementById(ch); if(o1){ var hdp = new ScrollPic(); hdp.scrollContId = ch; hdp.dotListId = ch+"_ad"; hdp.dotOnClassName = "selected"; hdp.arrLeftId = ch+"_left"; hdp.arrRightId = ch+"_right"; hdp.frameWidth = o1.offsetWidth; hdp.pageWidth = o1.offsetWidth; hdp.upright = false; hdp.speed = 10; hdp.autoPlayTime = t; hdp.initialize(); //初始化 } } function scrollers(ch,t,k,w,h){//轮播图(对象ID,间歇秒数,位置,宽度,高度)//例: scroller('hdp',3,3,360,240);或 scrollers('hdp',2); //宽度高度不支持百分比,可以为零或不填,则将自动获取父对象的宽度和高度,位置k=左,中,右 或k=1,2,3 之一 var o1=document.getElementById(ch); if(o1){ if(!w)w=-1;if(!h)h=-1; if(!k)k=2;//默认居中 if(w<1 || h<1){ w=o1.parentNode.offsetWidth;h=o1.parentNode.offsetHeight; } var d1=o1.getElementsByTagName("div"); if(d1.length<2){ var d2=document.getElementById(ch+"_left");if(d2)d2.parentNode.removeChild(d2); var d3=document.getElementById(ch+"_right");if(d3)d3.parentNode.removeChild(d3); var d4=document.getElementById(ch+"_ad");if(d4)d4.parentNode.removeChild(d4); return; } var dw=7;var dlr='right',dal=dw; if(k==1){ dlr='left'; }else if(k==2){ var dn=0; for(i=0;i\ .'+ch+'_d{float:left;width:'+w+'px;}\ .'+ch+'_a{height:'+dw*1.5+'px;line-height:'+dw+'px;-webkit-border-radius:11px;background:rgba(45,45,45,0.3);position:absolute;bottom:'+dw/2+'px;'+dlr+':'+dal+'px;z-index:11;}\ .'+ch+'_a .img{width:'+w+'px;height:'+h+' !important;}\ #'+ch+'_ad{text-align:center;margin:'+dw/3+'px 0 0 0;}\ #'+ch+'_ad span{display:inline-block;margin:0 '+dw/2+'px;width:'+dw+'px;height:'+dw+'px;vertical-align:middle;background:#f7f7f7;-webkit-border-radius:'+dw+'px;}\ #'+ch+'_ad .selected{background:#66ff33;}\ #'+ch+'_left,#'+ch+'_right{position:absolute;font-size:10px;top:'+(h-15)/2+'px;width:12px;text-align:center;height:15px;background:rgba(45,45,45,0.3);color:#fff;line-height:15px;-webkit-border-radius:5px;}\ #'+ch+'_right{right:0px;}#'+ch+'_left{left:0px;}\ \ '); o1.innerHTML+=sty1; var hdp = new ScrollPic(); hdp.scrollContId = ch; hdp.dotListId = ch+"_ad"; hdp.dotOnClassName = "selected"; hdp.arrLeftId = ch+"_left"; hdp.arrRightId = ch+"_right"; hdp.frameWidth = o1.offsetWidth; hdp.pageWidth = o1.offsetWidth; hdp.upright = false; hdp.speed = 10; hdp.autoPlayTime = t; hdp.initialize(); //初始化 } } function ScrollPic(scrollContId,arrLeftId,arrRightId,dotListId,listType){ this.scrollContId = scrollContId; //内容容器ID this.arrLeftId = arrLeftId; //左箭头ID this.arrRightId = arrRightId; //右箭头ID this.dotListId = dotListId; //点列表ID this.listType = listType; //列表类型 this.dotClassName = "dotItem";//点className this.dotOnClassName = "dotItemOn";//当前点className this.dotObjArr = []; this.listEvent = "onclick"; this.circularly = true; //循环滚动(无缝循环) this.pageWidth = 0; //翻页宽度 this.frameWidth = 0; //显示框宽度 this.speed = 10; //移动速度(单位毫秒,越小越快) this.space = 10; //每次移动像素(单位px,越大越快) this.scrollWidth = 5; //横向滚动宽度 this.upright = false; //垂直的滚动 this.pageIndex = 0; this.autoPlay = true; this.autoPlayTime = 2; //秒 this._autoTimeObj; this._scrollTimeObj; this._state = "ready"; // ready | floating | stoping this.stripDiv = document.createElement("DIV"); this.lDiv01 = document.createElement("DIV"); this.lDiv02 = document.createElement("DIV"); }; ScrollPic.prototype = { version : "", author : "mengjia", pageLength : 0, touch : true, initialize : function(){ //初始化 var thisTemp = this; if(!this.scrollContId){ throw new Error("必须指定scrollContId."); return; }; this.scDiv = this.$(this.scrollContId); if(!this.scDiv){ throw new Error("scrollContId不是正确的对象.(scrollContId = \""+ this.scrollContId +"\")"); return; }; this.scDiv.style[this.upright?'height':'width'] = this.frameWidth + "px"; this.scDiv.style.overflow = "hidden"; //HTML this.lDiv01.innerHTML = this.scDiv.innerHTML; this.scDiv.innerHTML = ""; this.scDiv.appendChild(this.stripDiv); this.stripDiv.appendChild(this.lDiv01); if(this.circularly){//无缝循环 this.stripDiv.appendChild(this.lDiv02); this.lDiv02.innerHTML = this.lDiv01.innerHTML }; this.stripDiv.style.overflow = "hidden"; this.stripDiv.style.zoom = "1"; this.stripDiv.style[this.upright?'height':'width'] = "32766px"; if(!this.upright){ this.lDiv01.style.cssFloat = "left"; this.lDiv01.style.styleFloat = "left"; this.lDiv01.style.overflow = "hidden"; }; this.lDiv01.style.zoom = "1"; if(this.circularly && !this.upright){ //无缝循环设置CSS this.lDiv02.style.cssFloat = "left"; this.lDiv02.style.styleFloat = "left"; this.lDiv02.style.overflow = "hidden"; }; this.lDiv02.style.zoom = "1"; this.addEvent(this.scDiv,"mouseover",function(){thisTemp.stop()}); this.addEvent(this.scDiv,"mouseout",function(){thisTemp.play()}); //left if(this.arrLeftId){ this.alObj = this.$(this.arrLeftId); if(this.alObj){ this.addEvent(this.alObj,"mousedown",function(){thisTemp.rightMouseDown()}); this.addEvent(this.alObj,"mouseup",function(){thisTemp.rightEnd()}); this.addEvent(this.alObj,"mouseout",function(){thisTemp.rightEnd()}); }; }; //right if(this.arrRightId){ this.arObj = this.$(this.arrRightId); if(this.arObj){ this.addEvent(this.arObj,"mousedown",function(){thisTemp.leftMouseDown()}); this.addEvent(this.arObj,"mouseup",function(){thisTemp.leftEnd()}); this.addEvent(this.arObj,"mouseout",function(){thisTemp.leftEnd()}); }; }; var pages = Math.ceil(this.lDiv01[this.upright?'offsetHeight':'offsetWidth'] / this.frameWidth),i,tempObj; this.pageLength = pages; //dot if(this.dotListId){ this.dotListObj = this.$(this.dotListId); if(this.dotListObj){ this.dotListObj.innerHTML = ""; for(i=0;i= this.lDiv01[this._sWidth]){ this.scDiv[this._scroll] = this.scDiv[this._scroll] + this.space - this.lDiv01[this._sWidth]; }else{ this.scDiv[this._scroll] += this.space; }; }else{ if(this.scDiv[this._scroll] + this.space >= this.lDiv01[this._sWidth] - this.frameWidth){ this.scDiv[this._scroll] = this.lDiv01[this._sWidth] - this.frameWidth; //停 this.leftEnd(); }else{ this.scDiv[this._scroll] += this.space; }; }; this.accountPageIndex(); }, moveRight : function(){ if(this.circularly){ //无缝循环 if(this.scDiv[this._scroll] - this.space <= 0){ this.scDiv[this._scroll] = this.lDiv01[this._sWidth] + this.scDiv[this._scroll] - this.space; }else{ this.scDiv[this._scroll] -= this.space; }; }else{ if(this.scDiv[this._scroll] - this.space <= 0){ this.scDiv[this._scroll] = 0; //停 this.rightEnd(); }else{ this.scDiv[this._scroll] -= this.space; }; }; this.accountPageIndex(); }, leftEnd : function(){ if(this._state != "floating" && this._state != 'touch'){return}; this._state = "stoping"; clearInterval(this._scrollTimeObj); var fill = this.pageWidth - this.scDiv[this._scroll] % this.pageWidth; this.move(fill); }, rightEnd : function(){ if(this._state != "floating" && this._state != 'touch'){return}; this._state = "stoping"; clearInterval(this._scrollTimeObj); var fill = - this.scDiv[this._scroll] % this.pageWidth; this.move(fill); }, move : function(num,quick){ var thisTemp = this; var thisMove = num/5; var theEnd = false; if(!quick){ if(thisMove > this.space){thisMove = this.space}; if(thisMove < -this.space){thisMove = -this.space}; }; if(Math.abs(thisMove)<1 && thisMove!=0){ thisMove = thisMove>=0?1:-1; }else{ thisMove = Math.round(thisMove); }; var temp = this.scDiv[this._scroll] + thisMove; if(thisMove>0){ if(this.circularly){ //无缝循环 if(this.scDiv[this._scroll] + thisMove >= this.lDiv01[this._sWidth]){ this.scDiv[this._scroll] = this.scDiv[this._scroll] + thisMove - this.lDiv01[this._sWidth]; }else{ this.scDiv[this._scroll] += thisMove; }; }else{ if(this.scDiv[this._scroll] + thisMove >= this.lDiv01[this._sWidth] - this.frameWidth){ this.scDiv[this._scroll] = this.lDiv01[this._sWidth] - this.frameWidth; this._state = "ready"; theEnd = true; //return; }else{ this.scDiv[this._scroll] += thisMove; }; }; }else{ if(this.circularly){ //无缝循环 if(this.scDiv[this._scroll] + thisMove < 0){ this.scDiv[this._scroll] = this.lDiv01[this._sWidth] + this.scDiv[this._scroll] + thisMove; }else{ this.scDiv[this._scroll] += thisMove; }; }else{ if(this.scDiv[this._scroll] - thisMove < 0){ this.scDiv[this._scroll] = 0; this._state = "ready"; theEnd = true; //return; }else{ this.scDiv[this._scroll] += thisMove; }; }; }; if(typeof(this.onpagechange) === 'function'){ this.onpagechange(); }; if(theEnd){ return; }; num -= thisMove; if(Math.abs(num) == 0){ this._state = "ready"; if(this.autoPlay){this.play()}; this.accountPageIndex(); return; }else{ this.accountPageIndex(); this._scrollTimeObj = setTimeout(function(){thisTemp.move(num,quick)},this.speed) }; }, pre : function(){ if(this._state != "ready"){return}; this._state = "stoping"; this.pageTo(this.pageIndex - 1); }, next : function(reStar){ if(this._state != "ready"){return}; this._state = "stoping"; if(this.circularly){ this.pageTo(this.pageIndex + 1); }else{ if(this.scDiv[this._scroll] >= this.lDiv01[this._sWidth] - this.frameWidth){ this._state = "ready"; if(reStar){this.pageTo(0)}; }else{ this.pageTo(this.pageIndex + 1); }; }; }, play : function(){ var thisTemp = this; if(!this.autoPlay){return}; clearInterval(this._autoTimeObj); this._autoTimeObj = setInterval(function(){thisTemp.next(true)},this.autoPlayTime * 1000); }, stop : function(){ clearInterval(this._autoTimeObj); }, pageTo : function(num){ if(this.pageIndex == num){return}; if(num < 0){num = this.pageLength - 1}; clearTimeout(this._scrollTimeObj); this._state = "stoping"; var fill = num * this.frameWidth - this.scDiv[this._scroll]; this.move(fill,true); }, accountPageIndex : function(){ var pageIndex = Math.floor(this.scDiv[this._scroll] / this.frameWidth); if(pageIndex == this.pageIndex){return}; this.pageIndex = pageIndex; if(this.pageIndex > Math.floor(this.lDiv01[this.upright?'offsetHeight':'offsetWidth'] / this.frameWidth )){this.pageIndex = 0}; if(typeof(this.onnowpage) === 'function'){ this.onnowpage(this.pageIndex); } var i; //alert(this.pageIndex); for(i=0;i 1){ //多点触摸 this.iPadStatus = 'ok'; return; }; this.iPadLastX = e.touches[0].pageX; var cX = this.iPadX - this.iPadLastX; if(this.iPadStatus == 'ok'){ if(this.iPadScrollY == window.pageYOffset && this.iPadScrollX == window.pageXOffset && Math.abs(cX)>this.scrollWidth){ //横向触摸 this.iPadStatus = 'touch'; }else{ return; }; }; this._state = 'touch'; var scrollNum = this.scDivScrollLeft + cX; if(scrollNum >= this.lDiv01[this._sWidth]){ scrollNum = scrollNum - this.lDiv01[this._sWidth]; }; if(scrollNum < 0){ scrollNum = scrollNum + this.lDiv01[this._sWidth]; }; this.scDiv[this._scroll] = scrollNum; e.preventDefault(); }, _touchend : function(e){ if(this.iPadStatus != 'touch'){return}; this.iPadStatus = 'ok'; //this._state = 'ready'; var cX = this.iPadX - this.iPadLastX; if(cX<0){ this.rightEnd(); }else{ this.leftEnd(); }; this.play(); }, $ : function(objName){if(document.getElementById){return eval('document.getElementById("'+objName+'")')}else{return eval('document.all.'+objName)}}, isIE : navigator.appVersion.indexOf("MSIE")!=-1?true:false, //Event addEvent : function(obj,eventType,func){if(obj.attachEvent){obj.attachEvent("on" + eventType,func);}else{obj.addEventListener(eventType,func,false)}}, delEvent : function(obj,eventType,func){ if(obj.detachEvent){obj.detachEvent("on" + eventType,func)}else{obj.removeEventListener(eventType,func,false)} }, //Cookie readCookie : function(l){var i="",I=l+"=";if(document.cookie.length>0){var offset=document.cookie.indexOf(I);if(offset!=-1){offset+=I.length;var end=document.cookie.indexOf(";",offset);if(end==-1)end=document.cookie.length;i=unescape(document.cookie.substring(offset,end))}};return i}, writeCookie : function(O,o,l,I){var i="",c="";if(l!=null){i=new Date((new Date).getTime()+l*3600000);i="; expires="+i.toGMTString()};if(I!=null){c=";domain="+I};document.cookie=O+"="+escape(o)+i+c}, //Style readStyle:function(i,I){if(i.style[I]){return i.style[I]}else if(i.currentStyle){return i.currentStyle[I]}else if(document.defaultView&&document.defaultView.getComputedStyle){var l=document.defaultView.getComputedStyle(i,null);return l.getPropertyValue(I)}else{return null}} };