javascript模拟滚动条实现代码(2)

  1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  2 <html xmlns="http://www.w3.org/1999/xhtml"> 
  3 <head> 
  4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  5 <title></title> 
  6 <style type="text/css"> 
  7 #container { 
  8 height:200px;_height:198px;width:385px;border:1px solid #CCCCCC; 
  9 } 
 10 #container #content{ 
 11 height:200px;width:370px;float:left;overflow:hidden; 
 12 } 
 13 #container #content div{ 
 14 margin-top:4px;margin-left:4px;height:16px;font-size:14px;color:#666666;width:100%; 
 15 } 
 16 #container #scroll{ 
 17 height:200px;width:15px;float:right; 
 18 } 
 19 .b1{width:600px; height:23px; background-image:url(/upload/2010-3/20100311163933339.gif)} 
 20 /*=========================================================*/ 
 21 #container1 { 
 22 height:200px;width:400px;_width:398px;border:1px solid #999999; 
 23 } 
 24 #container1 #content1{ 
 25 height:180px;width:400px;overflow:hidden; 
 26 } 
 27 #container1 #content1 td{ 
 28 height:180px;width:200px; 
 29 } 
 30 #container1 #content1 td img{ 
 31 height:180px;width:200px; 
 32 } 
 33 #container1 #scroll1{ 
 34 height:20px;width:400px; 
 35 } 
 36 #container1 #scroll1 #block1{ 
 37 width:20px;height:20px;background-color:#990000;position:absolute; 
 38 } 
 39 /*====================================================================*/ 
 40 table div{height:20px; font-size:13px; margin-top:5px; color:#333333; font-weight:bold} 
 41 table img{height:160px; width:200px;} 
 42 /*====================================================================*/ 
 43 .b2{background-image:url(/upload/2010-3/20100311163933545.gif); width:26px; height:34px;} 
 44 .b2-1{background:transparent url(/upload/2010-3/20100311163934864.gif) no-repeat scroll center center; width:20px; height:161px; margin-left:4px;} 
 45 .b2-2{background-image:url(/upload/2010-3/20100311163934603.gif); height:22px; width:20px; position:absolute} 
 46 .b2-3{background-image:url(/upload/2010-3/20100311163934887.gif); width:26px; height:34px;} 
 47 /*====================================================================*/ 
 48 .b3{ width:840px; height:216px;border:2px solid #b50000;} 
 49 .b3-1{width:740px; height:216px; margin:0 auto; } 
 50 .b3-2{height:180px; width:100%; overflow:hidden;} 
 51 .b3-l1{height:auto; width:660px;margin:0 auto;} 
 52 .b3-l2{font-size:0px; background-image:url(/upload/2010-3/20100311163934223.gif); height:20px; width:30px; background-position:-182px 0px; float:left; } 
 53 .b3-l3{font-size:0px; background-image:url(/upload/2010-3/20100311163934223.gif);height:20px; width:600px; background-position:0px -226px; float:left;} 
 54 .b3-l4{background-image:url(/upload/2010-3/20100311163934223.gif); height:20px; width:162px; background-position:-14px 0px; position:absolute} 
 55 .b3-l5{font-size:0px; background-image:url(/upload/2010-3/20100311163934223.gif); height:20px; width:30px; background-position:-216px 0px; float:left;} 
 56 /*====================================================================*/ 
 57 .b4-1{font-size:0px; height:17px; width:15px; background-image:url(/upload/2010-3/20100311163934575.gif); background-position:-15px 0; margin:0px;} 
 58 .b4-2{font-size:0px; height:166px; width:15px; background-image:url(/upload/2010-3/20100311163934575.gif); background-position:-30px 0; } 
 59 .b4-3{font-size:0px; background-image:url(/upload/2010-3/20100311163934575.gif); background-position:-45px 0; position:absolute; height:17px; width:15px; } 
 60 .b4-4{font-size:0px; height:17px; width:15px; background-image:url(/upload/2010-3/20100311163934575.gif); background-position:0 0;margin:0px;} 
 61 /*====================================================================*/ 
 62 .b5-1{background:url(/upload/2010-3/20100311163934971.jpg) no-repeat; width:550px; height:520px; padding:1px;} 
 63 .b5-2{height:350px; width:300px; margin-left:50px; margin-top:50px;} 
 64 .b5-3{ margin-top:10px; margin-left:5px; height:330px; width:260px; font-size:14px;; color:#054c68; float:left; overflow:hidden} 
 65 .b5-4{font-size:16px; font-weight:bold} 
 66 .b5-5{float:right; margin-right:12px; margin-top:10px; height:330px; width:15px; } 
 67 .b5-6{position:absolute; height:10px; line-height:10px; width:15px; background-color:#c6e7f4;} 
 68 </style> 
 69 </head> 
 70 <body style=" padding:30px; margin:0px;"> 
 71 
 72  
 73 <div id='a1' class="b1" > 
 74 <img id='block1' src='/upload/2010-3/20100311163934505.gif' style="position: absolute; margin-top:3px;"> 
 75 </div> 
 76 <div id='info1'>0%</div> 
 77 
 78  
 79 <div> 
 80 <div class="b2"></div> 
 81 <div id="a2" class="b2-1"> 
 82 <div id='block2' class="b2-2"></div> 
 83 </div> 
 84 <div class="b2-3"></div> 
 85 </div> 
 86 <div id='info2'>0%</div> 
 87 
 88  
 89 <div class="b3"> 
 90 <div id="a3" class="b3-1"> 
 91 <div class="b3-2"> 
 92 <table width="1680" height="180" border="0" cellspacing="0" cellpadding="0"> 
 93 <tr> 
 94 <td width="210" align="center"> 
 95 <img src='/upload/2010-3/20100311163955721.jpg'> 
 96 </td> 
 97 <td width="210" align="center"> 
 98 <img src="/upload/2010-3/20100311163956292.jpg"> 
 99 </td> 
100 <td width="210" align="center"> 
101 <img src="/upload/2010-3/20100311163956843.jpg"> 
102 </td> 
103 <td width="210" align="center"> 
104 <img src="/upload/2010-3/20100311163956806.jpg"> 
105 </td> 
106 <td width="210" align="center"> 
107 <img src="/upload/2010-3/20100311163956181.jpg"> 
108 </td> 
109 <td width="210" align="center"> 
110 <img src="http://comic.qq.com/images/comic/2008/10/13/gpt/5.jpg"> 
111 </td> 
112 <td width="210" align="center"> 
113 <img src="/upload/2010-3/20100311163956254.jpg"> 
114 </td> 
115 <td width="210" align="center"> 
116 <img src="/upload/2010-3/20100311163956721.jpg"> 
117 </td> 
118 </tr> 
119 </table> 
120 </div> 
121 <div class="b3-l1"> 
122 <div id='la' class="b3-l2"></div> 
123 <div id="scroll3" class="b3-l3"> 
124 <div id ="block3" class="b3-l4"></div> 
125 </div> 
126 <div id='r' class="b3-l5"></div> 
127 </div> 
128 </div> 
129 </div> 
130 
131  
132 <div id="container"> 
133 <div id="content"> 
134 <div>人族</div> 
135 <div>SKY流--强大的中国选手人皇sky的成名绝技</div> 
136 <div>KUA流--多不兵配合MK,前期可谓遇佛神通杀</div> 
137 <div>3法流--好象只是很好打兽族,打精灵还得配合小炮</div> 
138 <div>骑士狮鸠流--配合圣骑的3级光环全防心灵之火,绝对bug</div> 
139 <div>飘逸流--3蛋的成名绝技,首发圣骑,打得亡灵一般没的脾气</div> 
140 <div>机械流--飞机加坦克,曾经风靡一时,moon也吃亏无数</div> 
141 <div>万精油--3发+火枪+小炮,不变应万变的打法</div> 
142 <div>兽族</div> 
143 <div>跑狼骑--狼骑的高速移动,城攻与网,拆家起来无人能敌</div> 
144 <div>速飞龙--比较投机的打法,一旦投机成功,对方可以直接gg</div> 
145 <div>黑白牛--配合撒满,高攻,高防,高攻速,高血,无限复活</div> 
146 <div>白牛海--适合内战,无限复活且20的攻击打兽身上2倍加成</div> 
147 <div>XXXX流--猎头+巫医+撒满,orc时代的bug,如今很难看到</div> 
148 <div>万精油--大G+狼骑+白牛+科多,最常规的打法</div> 
149 <div>不死族</div> 
150 <div>蜘蛛流--蜘蛛的高功,加上不死英雄的强大魔法,强</div> 
151 <div>冰甲蜘蛛流--主要对抗兽族,让蜘蛛,亡骑更难打.</div> 
152 <div>西瓜流--中国天灾Ted的成名绝技,女妖给兵套个盾,象西瓜</div> 
153 <div>天地双鬼--有段时间一直被精灵认为是bug.</div> 
154 <div>胖子毁灭--高攻,高防,高血,且无视魔法效果</div> 
155 <div>骷髅海--可以看到满天的骷髅大军(驱散法师小精灵完克)</div> 
156 <div>精灵族</div> 
157 <div>女猎流1--NEvsNE,一般虎MM配合大量女猎,全是MM.</div> 
158 <div>女猎流2--NEvsHUM,SM女王配合大量女猎克制人族速矿</div> 
159 <div>吹风流--曾经的兽族客星,华丽,飘逸,==</div> 
160 <div>大树流--很多很多大树配合很多很多的ac,场面壮观</div> 
161 <div>弩车流--基本只有耳闻没见过</div> 
162 <div>乱矿流--Moon的成名绝技,一个矿被拆了,2个矿起来了</div> 
163 <div>三远流--ACMM+鹿MM+得鲁伊大叔,把任何物体射成马蜂窝</div> 
164 </div> 
165 <div id="scroll"> 
166 <div id='p1' class="b4-1"></div> 
167 <div id="scroll4" class="b4-2"> 
168 <div id="block4" class="b4-3"> </div> 
169 </div> 
170 <div id='p2' class="b4-4"></div> 
171 </div> 
172 </div> 
173 
174  
175 <div class="b5-1"> 
176 <div id='con1' class="b5-2"> 
177 <div id='ccc1' class="b5-3"> 
178   <span class="b5-4">1.身世</span>
179  
180   我爱罗是第四代风影之子,也是手鞠和勘九郎的弟弟。
181  
182   当他出世时,因为砂隐忍者村资金短缺,在他的父亲的指示下,一尾守鹤被封印在我爱罗的体内,目的是为了让他成为保护村庄的强大武器。忧郁的
183  
184   由于这样做需要作出牺牲,我爱罗的母亲因此成了牺牲品。
185  
186   我爱罗由他的舅父夜叉丸养大,并由他的父亲传授忍术。由于我爱罗具备守鹤的可怕力量,村子的人憎恨和惧怕他。
187  
188   夜叉丸是唯一关照他的人,也只有夜叉丸了解我爱罗的心里其实并不想伤害任何人。可是他的父亲第四代风影并不这么想,他一直视我爱罗为村庄的一个巨大威胁。 
189   于是第四代风影不断地派杀手刺杀我爱罗,可是没有一次成功。最后第四代风影只好叫夜叉丸下手。夜叉丸执行命令时死在我爱罗的手上。当我爱罗发现来杀他的杀手竟然是夜叉丸时感到异常震惊和悲伤。夜叉丸死前将真相告诉我爱罗,其实他从来就没有喜欢过我爱罗。他这样做只是希望能够为他的姐姐(我爱罗的母亲)报仇。夜叉丸把许多炸药绑在身上,希望和我爱罗同归于尽。由于砂子的保护,我爱罗活了下来。意识到没有人喜欢他,我爱罗逐渐地转变成一个没有感情的人,发誓只为自己而活,从杀人中寻找乐趣,并用沙子在额头上刻了"爱"字。
190  由于惧怕他体内的怪兽会占据他的心灵,我爱罗从小患了失眠症,这是为什么他的眼圈是黑的缘故。平时背上背负著一个巨大的葫芦,当危机出现时,葫芦中的砂子会自动保护我爱罗。
191 
192  
193   <span class="b5-4">2.忍术</span>
194  
195   ·绝对防御:随身携带一部分带有查克拉的砂子,随时形成防御
196  
197   ·砂分身:用沙子造出一个分身
198  
199   ·砂瞬身:用沙子移动
200  
201   ·砂缚柩:以沙迅速靠近对手将目标包在沙内无法行动,然后用强大的压力将对手压死。
202  
203   ·砂时雨:将沙漫布于空中,然后集中一点落下以配合下一式
204  
205   ·砂手里剑:在沙中注入查克拉使之硬化,快速放出
206  
207   ·砂之铠甲:长期将魔沙覆盖于身体表面起到防御作用
208  
209   ·砂之守护Ⅰ:沙不需要我爱罗的意识自行保护
210  
211   ·守鹤半觉醒:出现一个大沙球,将自己包住,有敌人进攻沙子会自动反击。
212  
213   ·守鹤之盾:最强的终极防御术!将地下石矿中最坚硬的部分混合查克拉制成。可以抵消一切攻击。用地下最强的矿物质加查克拉做成沙瀑枪葬的盾。
214  
215   ·守鹤之矛:最强的终极攻击术!与守鹤之盾相匹配。曾用此招将[匠忍者村]的始祖击毙
216  
217   ·砂瀑送葬:用沙将对手压死,用于被沙缚柩困住的对手出招
218  
219   ·流沙瀑流:大面积操纵沙控制对手以配合砂瀑大葬
220  
221   ·砂瀑大葬:沙暴送葬强化版,范围扩大到一平方公里
222  
223   ·砂瀑枪葬:最硬绝对攻击! 用沙以棱台形包住对手,然后用巨型守鹤之矛击中对手,这招消耗在沙中注入查克拉使之硬化,快速放出查克拉特别大,杀伤力强。
224  
225   ·砂流葬:控制目标下方的沙,制成流沙,将目标陷入地下200米处压死 灭砂瀑葬
226  
227   ·灭砂瀑葬:在沙地上开出巨大裂口,使对手陷入沙层以下。当沙子完全埋没后,将查克拉
228  
229   集中于左手,使沙子放射出与地震般强大的震感爆炸力,杀伤力极强
230  
231   ·砂缚牢:沙缚柩扩大版.将困住对手的沙缚柩浮于半空利用周围的风沙配合查克拉进行方型式四面扭曲、挤压,最后爆破沙牢
232  
233   ·假寐之术(狸寝术):催眠术,让自己深度沉睡,以爆发出守鹤
234  
235   ·砂之眼:在被完全包裹住自己时,为了探清外面的情况做了一个眼睛。但是这不是普通的沙眼,和视神经是连接的
236  
237   ·砂雷针:剧场版『幻之地底遗迹』中我爱罗使用的绝招,将沙子做成针状散布在敌人四周,产生雷电攻击敌人
238  
239   .风遁·无限砂尘大突破:风遁混杂着沙子,攻击大范围内的敌人
240  
241   .风遁·练空弹:用大量查克拉压缩做成的空气波攻击敌人
242  
243   ·砂漠浮游:利用沙将自己及李洛克升到空中,以避过君麻吕恐怖之术-早蕨之舞(把大地化为尸骨)
244  
245   ·沙瀑意流:将大片的岩石化为沙子
246  
247   ·砂尘双击 
248  
249   ·砂尘冥柩 
250  
251   沙阵雨:,可使对手的脚无法动
252  
253 </div> 
254 <div id='scroll5' class="b5-5"> 
255 <div id="block5" class="b5-6"> </div> 
256 </div> 
257 <div style="clear:both"></div> 
258 </div> 
259 </div> 
260 <script language="javascript"> 
261 var Sys = (function(ua){ 
262 var s = {}; 
263 s.IE = ua.match(/msie ([\d.]+)/)?true:false; 
264 s.Firefox = ua.match(/firefox\/([\d.]+)/)?true:false; 
265 s.Chrome = ua.match(/chrome\/([\d.]+)/)?true:false; 
266 s.IE6 = (s.IE&&([/MSIE (\d)\.0/i.exec(navigator.userAgent)][0][1] == 6))?true:false; 
267 s.IE7 = (s.IE&&([/MSIE (\d)\.0/i.exec(navigator.userAgent)][0][1] == 7))?true:false; 
268 s.IE8 = (s.IE&&([/MSIE (\d)\.0/i.exec(navigator.userAgent)][0][1] == 8))?true:false; 
269 return s; 
270 })(navigator.userAgent.toLowerCase()); 
271 Sys.IE6&&document.execCommand("BackgroundImageCache", false, true); 
272 var $ = function (id) { 
273 return "string" == typeof id?document.getElementById(id):id; 
274 }; 
275 var $$ = function(p,e){ 
276 return p.getElementsByTagName(e); 
277 }; 
278 function addListener(element,e,fn){ 
279 element.addEventListener?element.addEventListener(e,fn,false):element.attachEvent("on" + e,fn) 
280 }; 
281 function removeListener(element,e,fn){ 
282 element.removeEventListener?element.removeEventListener(e,fn,false):element.detachEvent("on" + e,fn) 
283 }; 
284 function create(elm,parent,fn){ 
285 var element = document.createElement(elm);parent.appendChild(element);if(fn)fn(element); 
286 }; 
287 var Css = function(e,o){ 
288 if(typeof o=="string") 
289 { 
290 e.style.cssText=o; 
291 return; 
292 } 
293 for(var i in o) 
294 e.style[i] = o[i]; 
295 }; 
296 function getobjpos(el,left){ 
297 var val = 0; 
298 while (el !=null) { 
299 val += el["offset" + (left? "Left": "Top")]; 
300 el = el.offsetParent; 
301 } 
302 return val; 
303 }; 
304 var CurrentStyle = function(element){ 
305 return element.currentStyle || document.defaultView.getComputedStyle(element, null); 
306 }; 
307 var Bind = function(object, fun) { 
308 var args = Array.prototype.slice.call(arguments).slice(2); 
309 return function() { 
310 return fun.apply(object, args); 
311 } 
312 }; 
313 var BindAsEventListener = function(object, fun,args) { 
314 var args = Array.prototype.slice.call(arguments).slice(2); 
315 return function(event) { 
316 return fun.apply(object, [event || window.event].concat(args)); 
317 } 
318 }; 
319 var Tween = { 
320 Linear: function(t,b,c,d){ return c*((t=t/d-1)*t*t*t*t + 1) + b; } 
321 }; 
322 var Extend = function(destination, source) { 
323 for (var property in source) { 
324 destination[property] = source[property]; 
325 } 
326 }; 
327 var Class = function(properties){ 
328 var _class = function(){return (arguments[0] !== null && this.initialize && typeof(this.initialize) == 'function') ? this.initialize.apply(this, arguments) : this;}; 
329 _class.prototype = properties; 
330 return _class; 
331 }; 
332 var Drag = new Class({ 
333 options:{ 
334 Limit : false, 
335 mxLeft : 0, 
336 mxRight : 9999, 
337 mxTop : 0, 
338 mxBottom : 9999, 
339 mxContainer : null, 
340 LockX : false, 
341 LockY : false, 
342 zIndex : 2, 
343 Onstart : function(){}, 
344 Onmove : function(){}, 
345 Onstop : function(){} 
346 }, 
347 initialize:function(obj,options){ 
348 this._obj = obj; 
349 this._x = 0; 
350 this._y = 0; 
351 this._marginLeft = 0; 
352 this._marginTop = 0; 
353 this._fM = BindAsEventListener(this, this.Move); 
354 this._fS = Bind(this, this.Stop); 
355 var o ={}; 
356 Extend(o,this.options); 
357 Extend(o,options||{}); 
358 Extend(this,o); 
359 this.zIndex = Math.max(this.zIndex,Drag.zIndex||0); 
360 if(this.mxContainer&&this.Limit) //设置了限制 和 容器限制后 计算边界直 
361 { 
362 this.mxLeft = getobjpos(this.mxContainer,1); 
363 this.mxTop = getobjpos(this.mxContainer,0); 
364 this.mxRight = getobjpos(this.mxContainer,1) + this.mxContainer.offsetWidth-this._obj.offsetWidth; 
365 this.mxBottom = getobjpos(this.mxContainer,0) + this.mxContainer.offsetHeight-this._obj.offsetHeight; 
366 } 
367 addListener(this._obj,"mousedown",BindAsEventListener(this,this.Start)); 
368 Drag.zIndex = this.zIndex; 
369 }, 
370 Start:function(e){ 
371 this._obj.style.zIndex = ++Drag.zIndex; 
372 this._x = e.clientX - this._obj.offsetLeft ; 
373 this._y = e.clientY - this._obj.offsetTop; 
374 this._marginLeft = parseInt(this._obj.style.marginLeft)||0; 
375 this._marginTop = parseInt(this._obj.style.marginTop)||0; 
376 if(Sys.IE) 
377 { 
378 addListener(this._obj, "losecapture", this._fS); 
379 this._obj.setCapture(); 
380 } 
381 else 
382 { 
383 e.preventDefault(); 
384 addListener(window, "blur", this._fS); 
385 } 
386 addListener(document,"mousemove",this._fM); 
387 addListener(document,"mouseup",this._fS); 
388 this.Onstart(); 
389 }, 
390 Move:function(e){ 
391 window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); 
392 var iLeft = e.clientX - this._x, iTop = e.clientY - this._y; 
393 if(this.Limit){ 
394 iLeft= Math.min(Math.max(iLeft,this.mxLeft),this.mxRight); 
395 iTop = Math.min(Math.max(iTop,this.mxTop),this.mxBottom); 
396 } 
397 if(!this.LockX)this._obj.style.left = iLeft - this._marginLeft + "px"; 
398 if(!this.LockY)this._obj.style.top = iTop - this._marginTop + "px"; 
399 this.Onmove(); 
400 }, 
401 Stop:function(){ 
402 removeListener(document,'mousemove',this._fM); 
403 removeListener(document,'mouseup',this._fS); 
404 if(Sys.IE) 
405 { 
406 removeListener(this._obj, "losecapture", this._fS); 
407 this._obj.releaseCapture(); 
408 } 
409 else 
410 removeListener(window, "blur", this._fS); 
411 this.Onstop(); 
412 } 
413 }); 
414 var Slider = new Class({ 
415 options :{ 
416 direction : true, //true为纵,false为横 
417 type : "Y", //分别为X,Y,N 
418 shapechange : true, //是否该变滚动条的形状 
419 topvalue : 0, //上或左偏差值 
420 bottomvalue : 0, //下或右偏差值 
421 border : 0, //处理ie下border的问题 
422 step : 1, //键盘操作时候的步长 
423 t : 0, 
424 b : 0, 
425 c : 0, 
426 d : 40, 
427 Onmove : function(){} 
428 }, 
429 initialize :function(container,block,blockcontainer,options){ 
430 this.container = container; 
431 this.block = block; 
432 this.blockcontainer = blockcontainer; 
433 var o ={}; 
434 Extend(o,this.options); 
435 Extend(o,options||{}); 
436 Extend(this,o); 
437 this.timer = null; 
438 this.ismove = false; 
439 var _self = this; 
440 /*==========================================================================================================================*/ 
441 /*如果滚动条不是单独的图片可以用div模拟 这时候就得设置滚动条的长度或者宽度了 按比例设置*/ 
442 this.type =="Y"&&this.shapechange&&(this.block.style.height = this.container.offsetHeight*(this.container.offsetHeight/$$(this.container,"div")[0].scrollHeight)+"px"); 
443 this.type =="X"&&this.shapechange&&(this.block.style.width = this.container.offsetWidth*(this.container.offsetWidth/$$(this.container,"div")[0].scrollWidth)+"px"); 
444 /*==========================================================================================================================*/ 
445 var xc = this.blockcontainer?this.blockcontainer:this.container; 
446 addListener(xc,'click',BindAsEventListener(this,this.Start)); 
447 addListener(this.block,'click',BindAsEventListener(this,this.Bubble)); 
448 /*==========================================================================================================================*/ 
449 this.KeyBind(this.container); //键盘与鼠标滑轮部分参考的cloudgamer的 
450 this.WheelBind(this.container); 
451 var oFocus = Sys.IE ? this.block : this.container; 
452 addListener(this.block, "mousedown", function(){ _self.Stopmove();oFocus.focus();}); 
453 /*==========================================================================================================================*/ 
454 this.drag = new Drag(this.block,{Limit:true,mxContainer:xc,Onmove:Bind(this,this.Move)}); 
455 this.drag[this.direction?"LockX":"LockY"] = true; 
456 this.border = (Sys.IE6||Sys.IE7)?this.border:0; //ie6,7下 border也要算进去 不然有误差 ie8,却又不需要算 真是纠结............ 
457 if(this.direction) 
458 { 
459 this.drag.mxTop = this.drag.mxTop - this.topvalue + this.border; 
460 this.drag.mxBottom = this.drag.mxBottom + this.bottomvalue + this.border; 
461 this.block.style.top = this.drag.mxTop+"px"; 
462 } 
463 else 
464 { 
465 this.drag.mxLeft = this.drag.mxLeft - this.topvalue + this.border; 
466 this.drag.mxRight = this.drag.mxRight + this.bottomvalue + this.border; 
467 this.block.style.left = this.drag.mxLeft+"px"; 
468 } 
469 this.Move(); 
470 }, 
471 Keycontrol : function(e){ 
472 this.Stopdefault(e); 
473 this.Stopmove(); 
474 var l1 =this.direction?"top":"left",l2 = this.direction?"offsetTop":"offsetLeft",l3=this.direction?"mxTop":"mxLeft",l4=this.direction?"mxBottom":"mxRight"; 
475 if(e.keyCode==37||e.keyCode==38)this.block.style[l1] = Math.max(this.block[l2]-this.step,this.drag[l3]) +'px'; 
476 if(e.keyCode==39||e.keyCode==40)this.block.style[l1] = Math.min(this.block[l2]+this.step,this.drag[l4]) +'px'; 
477 this.Move(); 
478 }, 
479 Wheelcontrol :function(e){ 
480 this.Stopmove(); 
481 var t = Sys.Firefox?e.detail:e.wheelDelta; 
482 var l1 =this.direction?"top":"left",l2 = this.direction?"offsetTop":"offsetLeft",l3=this.direction?"mxTop":"mxLeft",l4=this.direction?"mxBottom":"mxRight"; 
483 this.block.style[l1] = Sys.Firefox?(t<0?Math.max(this.block[l2]-5,this.drag[l3])+'px':Math.min(this.block[l2]+5,this.drag[l4]) +'px'):(t>0?Math.max(this.block[l2]-5,this.drag[l3])+'px':Math.min(this.block[l2]+5,this.drag[l4]) +'px'); 
484 this.Move(); 
485 this.Stopdefault(e); 
486 }, 
487 WheelBind : function(o){ 
488 addListener(o, Sys.Firefox? "DOMMouseScroll" : "mousewheel", BindAsEventListener(this,this.Wheelcontrol)); 
489 }, 
490 KeyBind : function(o){ 
491 addListener(o,'keydown',BindAsEventListener(this,this.Keycontrol)); 
492 o.tabIndex = -1; 
493 Sys.IE || (o.style.outline = "none"); 
494 }, 
495 Move : function(){ 
496 var c = $$(this.container,"div")[0] ; 
497 /*=========================================================================================================================*/ 
498 if(this.type=="Y")c.scrollTop = (c.scrollHeight - c.offsetHeight)*(this.block.offsetTop - this.drag.mxTop)/(this.blockcontainer.offsetHeight - this.block.offsetHeight +this.topvalue+this.bottomvalue); 
499 if(this.type=="X")c.scrollLeft = (c.scrollWidth - c.offsetWidth)*(this.block.offsetLeft - this.drag.mxLeft)/(this.blockcontainer.offsetWidth-this.block.offsetWidth+this.topvalue+this.bottomvalue); 
500 /*上面为滚动条的计算方式*/ 
501 /*=========================================================================================================================*/ 
502 this.Onmove(); 
503 }, 
504 Start : function(e){ 
505 this.ismove = true; 
506 this.b = this.direction?this.block.offsetTop:this.block.offsetLeft; 
507 if(this.direction) 
508 { 
509 var t = Sys.Chrome?document.body.scrollTop:document.documentElement.scrollTop; 
510 var l = (e.clientY+t)<=this.block.offsetTop?0:this.block.offsetHeight; 
511 } 
512 else 
513 { 
514 var t = Sys.Chrome?document.body.scrollLeft:document.documentElement.scrollLeft; 
515 var l = (e.clientX+t)<=this.block.offsetLeft?0:this.block.offsetWidth; 
516 } 
517 this.c = this.direction?(e.clientY+t-l):(e.clientX+t-l); 
518 this.t = 0; 
519 this.Run(); 
520 }, 
521 Run : function(){ 
522 if(!this.ismove)return; 
523 clearTimeout(this.timer); 
524 if(this.t<this.d) 
525 { 
526 this.Runto(Math.round(Tween.Linear(this.t++,this.b,(this.c-this.b),this.d))); 
527 this.timer = setTimeout(Bind(this,this.Run),5); 
528 } 
529 else 
530 { 
531 this.Runto(this.c); 
532 this.t=0; 
533 this.ismove = true; 
534 } 
535 }, 
536 Runto : function(i){ 
537 this.block.style[this.direction?"top":"left"] = i + "px"; 
538 this.Move(); 
539 }, 
540 Bubble : function(e){ 
541 Sys.IE?(e.cancelBubble=true):(e.stopPropagation()); 
542 }, 
543 Stopdefault : function(e){ 
544 Sys.IE?(e.returnValue = false):(e.preventDefault()); 
545 }, 
546 Left : function(o){ 
547 this.Lrmove("mxTop","mxLeft"); 
548 }, 
549 Right : function(){ 
550 this.Lrmove("mxBottom","mxRight"); 
551 }, 
552 Lrmove : function(t,b){ 
553 if(this.t!=0)return; 
554 this.ismove = true; 
555 this.b = this.direction?this.block.offsetTop:this.block.offsetLeft; 
556 this.c = this.direction?this.drag[t]:this.drag[b]; 
557 this.Run(); 
558 }, 
559 Stopmove : function(){ 
560 this.ismove=false;clearTimeout(this.time);this.t = 0; 
561 } 
562 }) 
563 window.onload = function(){ 
564 //================================================================================================ 
565 new Slider($('a1'),$('block1'),null,{direction:false,type:"N",Onmove:function(){ 
566 $('info1').innerHTML = parseInt((this.block.offsetLeft - this.drag.mxLeft)/(this.container.offsetWidth-this.block.offsetWidth)*100) + "%"; 
567 }}); 
568 //================================================================================================ 
569 new Slider($('a2'),$('block2'),null,{type:"S",Onmove:function(){ 
570 $('info2').innerHTML = parseInt((this.block.offsetTop - this.drag.mxTop)/(this.container.offsetHeight-this.block.offsetHeight)*100) + "%"; 
571 }}); 
572 //================================================================================================ 
573 var deom3 = new Slider($('a3'),$("block3"),$("scroll3"),{shapechange:false,direction:false,type:"X",topvalue:5,bottomvalue:5,border:2}); 
574 addListener($('la'),'click',Bind(deom3,deom3.Left)); 
575 addListener($('r'),'click',Bind(deom3,deom3.Right)); 
576 //================================================================================================ 
577 var deom4=new Slider($('container'),$('block4'),$('scroll4'),{shapechange:false,topvalue:11,bottomvalue:12,border:1}); 
578 addListener($('p1'),'click',Bind(deom4,deom4.Left)); 
579 addListener($('p2'),'click',Bind(deom4,deom4.Right)); 
580 //================================================================================================ 
581 new Slider($('con1'),$('block5'),$('scroll5')); 
582 } 
583 </script> 
584 </body> 
585 </html> 

posted on 2012-06-14 10:50  jQing  阅读(439)  评论(0编辑  收藏  举报

导航