;(function(){ var index = 0; var timer = null; var suspension = function(options){ this.width = options.width||200; this.height = options.height||240; this.data = options.data||{title: '',content: ''}; this.isclose = options.isclose||true; this.isdrag = options.isdrag||false; this.scrollbg = options.scrollbg||'green'; this.speed = options.speed>=2?1:options.speed; this.left = options.left||0;/*默认left距离*/ this.top = options.left||0;/*默认top距离*/ this.tflag = false;/*控制高度-锁*/ this.lflag = true;/*控制宽度-锁*/ this.index = index; this.init(); }; /*初始化*/ suspension.prototype.init = function(){ this.adddom(); var rglsuspension = document.getelementbyid('rgl_suspension'+this.index); var rglspclose = document.getelementbyid('rgl_sp_close'+this.index); var rglspcontent = document.getelementbyid('rgl_sp_content'+this.index); var rglspcontenttext = document.getelementbyid('rgl_sp_content_text'+this.index); /*设置内容、滚动条高度*/ this.setheight({ content: rglspcontent, }); /*是否关闭*/ if(this.isclose){ this.close({ close: rglspclose, suspension: rglsuspension }); } /*运动起来*/ this.motion({ suspension: rglsuspension }); /*移入停止、离开运行*/ this.stopstart({ suspension: rglsuspension }); /*拖拽*/ if(this.isdrag){ this.drag({ suspension: rglsuspension, title: rglspcontent }); } /*窗口改变*/ this.resize({ suspension: rglsuspension }); }; /*添加结构*/ suspension.prototype.adddom = function(){ var div = document.createelement('div'); div.classname = "suspension"; div.id = "rgl_suspension"+this.index; div.style.position = 'absolute'; div.style.width = this.width+'px'; div.style.height = this.height+'px'; div.style.left = this.left+'px'; div.style.top = this.top+'px'; div.style.zindex = 99999; var temp = ""; if(this.isclose){ temp += '×'; } temp += '
'+ '
'+this.data.content+'
'+ '
'; div.innerhtml = temp; document.getelementsbytagname('body')[0].appendchild(div); }; /*运动起来*/ suspension.prototype.setheight = function(options){ options.content.style.height = this.height+'px'; }; /*运动起来*/ suspension.prototype.motion = function(options){ var width = document.documentelement.clientwidth-options.suspension.offsetwidth;/*获取并计算浏览器初始宽度*/ var height = document.documentelement.clientheight-options.suspension.offsetheight;/*获取并计算浏览器初始高度*/ var _this = this; timer=setinterval(function(){ var scrolltop = document.documentelement.scrolltop||document.body.scrolltop; if(!_this.tflag){ _this.top += _this.speed; if(_this.top>=height){ _this.tflag=true; } }else{ _this.top -= _this.speed; if(_this.top<=0){ _this.tflag=false; } } if(_this.lflag){ _this.left += _this.speed; if(_this.left>=width){ _this.lflag=false; } }else{ _this.left -= _this.speed; if(_this.left<=0){ _this.lflag=true; } } options.suspension.style.left = _this.left+'px'; options.suspension.style.top = (_this.top+scrolltop)+'px'; },15); }; /*关闭悬浮*/ suspension.prototype.close = function(options){ options.close.onclick = function(){ document.getelementsbytagname('body')[0].removechild(options.suspension); }; }; /*窗口变化*/ suspension.prototype.resize = function(options){ var _this = this; window.onresize = function(){ clearinterval(timer); _this.motion(options); }; }; /*兼容监听事件*/ suspension.prototype.addevent = function (obj,xevent,fn) { if(obj.attachevent){ obj.attachevent('on'+xevent,fn); }else{ obj.addeventlistener(xevent,fn,false); } }; /*移入停止运动--离开继续运动*/ suspension.prototype.stopstart = function (options) { options.suspension.onmouseenter = function(){ clearinterval(timer); }; var _this = this; options.suspension.onmouseleave = function(){ _this.motion(options); }; }; /*获取样式*/ suspension.prototype.getstyle = function (obj,stylename){ if(obj.currentstyle){ //ie return obj.currentstyle[stylename]; }else{ //chrom,ff return getcomputedstyle(obj,false)[stylename]; } }; /*拖拽*/ suspension.prototype.drag = function(options){ var state;/*拖动锁*/ var _this = this; options.title.onmousedown = function(event){ event = event||window.event; state = false; var scrolltop = document.documentelement.scrolltop||document.body.scrolltop; //记录鼠标距离盒子左边和上边的距离 偏移量 var disx = event.clientx-options.suspension.offsetleft;//左边 var disy = event.clienty+scrolltop-options.suspension.offsettop;//上边 //鼠标移动事件 document.onmousemove=function(event){ event = event||window.event; var x = event.clientx-disx;//盒子左边的距离 var y = event.clienty+scrolltop-disy;//盒子顶部距离 var w = document.documentelement.clientwidth; var h = document.documentelement.clientheight; //判断屏幕范围 if(x<0){ x=0; } if(y<0){ y=0; } if(x>w-options.suspension.offsetwidth){ x=w-options.suspension.offsetwidth; } if(y>h+scrolltop-options.suspension.offsetheight){ y=h+scrolltop-options.suspension.offsetheight; } //赋值 _this.top = y-scrolltop; _this.left = x; options.suspension.style.left=x+"px"; options.suspension.style.top=y+"px"; }; //鼠标抬起停止拖拽 document.onmouseup=function(){ document.onmousemove=null; state = true; }; return false; }; }; window.suspension = suspension; })(); /** window.onload = function(){ new suspension({ width: 470, height: 230, left: 100, top: 20, data: { content: '' //content: '' }, speed: 6, isclose: true, isdrag: true, scrollbg: 'red', }); };**/