📄 scrollpane.js
字号:
if(!dojo._hasResource["dojox.layout.ScrollPane"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.layout.ScrollPane"] = true;dojo.provide("dojox.layout.ScrollPane");dojo.experimental("dojox.layout.ScrollPane");dojo.require("dijit.layout._LayoutWidget");dojo.require("dijit._Templated");dojo.declare("dojox.layout.ScrollPane", [dijit.layout._LayoutWidget,dijit._Templated], { // summary: A pane that "scrolls" its content based on the mouse poisition inside // // description: // A sizable container that takes it's content's natural size and creates // a scroll effect based on the relative mouse position. It is an interesting // way to display lists of data, or blocks of content, within a confined // space. // // Horizontal scrolling is supported. Combination scrolling is not. // // FIXME: need to adust the _line somehow, it stops scrolling // // example: // | <div dojoType="dojox.layout.ScrollPane" style="width:150px height:300px;"> // | <!-- any height content --> // | </div> // // _line: dojo._Line // storage for our top and bottom most scrollpoints _line: null, // _lo: the height of the visible pane _lo: null, _offset: 15, // orientation: String // either "horizontal" or "vertical" for scroll orientation. orientation: "vertical", templateString:"<div class=\"dojoxScrollWindow\" dojoAttachEvent=\"onmouseenter: _enter, onmouseleave: _leave\">\n <div class=\"dojoxScrollWrapper\" style=\"${style}\" dojoAttachPoint=\"wrapper\" dojoAttachEvent=\"onmousemove: _calc\">\n\t<div class=\"dojoxScrollPane\" dojoAttachPoint=\"containerNode\"></div>\n </div>\n <div dojoAttachPoint=\"helper\" class=\"dojoxScrollHelper\"><span class=\"helperInner\">|</span></div>\n</div>\n", layout: function(){ // summary: calculates required sizes. call this if we add/remove content manually, or reload the content. dojo.style(this.wrapper,this._dir,this.domNode.style[this._dir]); this._lo = dojo.coords(this.wrapper,true); this._size = Math.max(0,(this._vertical ? (this.containerNode.scrollHeight - this._lo.h) : (this.containerNode.scrollWidth - this._lo.w) )); this._line = new dojo._Line(0-this._offset,this._size+(this._offset*2)); // share a relative position w the scroll offset via a line var u = this._lo[(this._vertical?"h":"w")] var size = u * (u / Math.max(1,this._size)); var center = Math.floor(u - size); this._helpLine = new dojo._Line(0,center); // size the helper dojo.style(this.helper,this._dir,Math.floor(size)+"px"); }, postCreate: function(){ this.inherited(arguments); // for the helper this._showAnim = dojo._fade({ node:this.helper, end:0.5, duration:350 }); this._hideAnim = dojo.fadeOut({ node:this.helper, duration: 750 }); // orientation helper this._vertical = (this.orientation == "vertical"); if(!this._vertical){ dojo.addClass(this.containerNode,"dijitInline"); this._edge = "left"; this._dir = "width"; }else{ this._dir = "height"; this._edge = "top"; } this._hideAnim.play(); dojo.style(this.wrapper,"overflow","hidden"); }, _set: function(/* Float */n){ // summary: set the pane's scroll offset, and position the virtual scroll helper this.wrapper[(this._vertical ? "scrollTop" : "scrollLeft")] = Math.floor(this._line.getValue(n)); dojo.style(this.helper,this._edge,Math.floor(this._helpLine.getValue(n))+"px"); }, _calc: function(/* Event */e){ // summary: calculate the relative offset of the cursor over the node, and call _set this._set(this._vertical ? ((e.pageY-(this._lo.y))/this._lo.h) : ((e.pageX-(this._lo.x))/this._lo.w) ); }, _enter: function(e){ if(this._hideAnim && this._hideAnim.status()=="playing"){ this._hideAnim.stop(); } this._showAnim.play(); }, _leave: function(e){ this._hideAnim.play(); } });}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -