日期:2014-05-16 浏览次数:20361 次
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <style type="text/css"> *{ margin:0px; padding: 0px; list-style:none;} .box { width:500px; margin:0 auto; position:relative; top:100px; } .Container { position: absolute; top:0px; left: 100px; width: 400px; height: 200px; background-color: #EEE; } #Scroller-1 { position: absolute; overflow: hidden; width: 400px; height: 200px; } #Scroller-1 p { margin: 0; padding: 10px 20px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; text-indent: 20px; color: #777; } .Scroller-Container { position: absolute; top: 0px; left: 0px; } .Scrollbar-Track { width: 10px; height: 200px; position: absolute; top: 0px; right:0px; background-color: #EEE; cursor:pointer; } .Scrollbar-Handle { position: absolute; top: 0px; left: 0px; width: 10px; height: 30px; background-color: #CCC; } </style> <script type="text/javascript"> var scroller = null; var scrollbar = null; window.onload = function () { scroller = new jsScroller(document.getElementById("Scroller-1"), 400, 200); scrollbar = new jsScrollbar (document.getElementById("Scrollbar-Container"), scroller, false); } function jsScroller (o, w, h) { var self = this; var list = o.getElementsByTagName("div"); for (var i = 0; i < list.length; i++) { if (list[i].className.indexOf("Scroller-Container") > -1) { o = list[i]; // 以 o 为对象,将对象包含的class名为Scroller-Container的元素付给 对象 o } } //Private methods this._setPos = function (x, y) { if (x < this.viewableWidth - this.totalWidth) x = this.viewableWidth - this.totalWidth; if (x > 0) x = 0; if (y < this.viewableHeight - this.totalHeight) y = this.viewableHeight - this.totalHeight; if (y > 0) y = 0; this._x = x; this._y = y; with (o.style) { left = this._x +"px"; top = this._y +"px"; } }; //Public Methods this.reset = function () { this.content = o; this.totalHeight = o.offsetHeight; this.totalWidth = o.offsetWidth; this._x = 0; this._y = 0; with (o.style) { left = "0px"; top = "0px"; } }; this.scrollBy = function (x, y) { this._setPos(this._x + x, this._y + y); }; this.scrollTo = function (x, y) { this._setPos(-x, -y); }; this.stopScroll = function () { if (this.scrollTimer) window.clearInterval(this.scrollTimer); }; this.startScroll = function (x, y) { this.stopScroll(); this.scrollTimer = window.setInterval( function(){ self.scrollBy(x, y); }, 40 ); }; this.swapContent = function (c, w, h) { o = c; var list = o.getElementsByTagName("div"); for (var i = 0; i < list.length; i++) { if (list[i].className.indexOf("Scroller-Container") > -1) { o = list[i]; } } if (w) this.viewableWidth = w; if (h) this.viewableHeight = h; this.reset(); }; //variables this.content = o; this.viewableWidth = w; this.viewableHeight = h; this.totalWidth = o.offsetWidth; this.totalHeight = o.offsetHeight; this.scrollTimer = null; this.reset(); }; function jsScrollbar (o, s, a, ev) { var self = this; this.reset = function () { //Arguments that were passed this._parent = o; this._src = s; this.auto = a ? a : false; this.eventHandler = ev ? ev : function () {}; //Component Objects this._up = this._findComponent("Scrollbar-Up", this._parent); this._down = this._findComponent("Scrollbar-Down", this._parent); this._yTrack = this._findComponent("Scrollbar-Track", this._parent); this._yHandle = this._findComponent("Scrollbar-Handle", this._yTrack); //Height and position properties this._trackTop = findOffsetTop(this._yTrack); this._trackHeight = this._yTrack.offsetHeight; this._