source: Dev/trunk/src/client/dojox/fx/scroll.js @ 532

Last change on this file since 532 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 1.7 KB
Line 
1define(["dojo/_base/kernel","dojo/_base/lang", "dojo/_base/fx", "dojox/fx/_base","dojox/fx/_core","dojo/dom-geometry","dojo/_base/sniff"],
2        function (kernel, lang, baseFx, fxExt, Line, domGeom, has){
3        kernel.experimental("dojox.fx.scroll");
4        var fx = lang.getObject("dojox.fx",true);
5        fxExt.smoothScroll = function(/* Object */args){
6                // summary:
7                //              Returns an animation that will smooth-scroll to a node
8                // description:
9                //              This implementation support either horizontal or vertical scroll, as well as
10                //              both. In addition, element in iframe can be scrolled to correctly.
11                // args:
12                //              - offset: {x: int, y: int} this will be added to the target position
13                //              - duration: Duration of the animation in milliseconds.
14                //              - win: a node or window object to scroll
15       
16                if(!args.target){ args.target = domGeom.position(args.node); }
17       
18                var isWindow = lang[(has("ie") ? "isObject" : "isFunction")](args["win"].scrollTo),
19                        delta = { x: args.target.x, y: args.target.y }
20                ;
21                if(!isWindow){
22                        var winPos = domGeom.position(args.win);
23                        delta.x -= winPos.x;
24                        delta.y -= winPos.y;
25                }
26                var _anim = (isWindow) ?
27                        (function(val){
28                                args.win.scrollTo(val[0],val[1]);
29                        }) :
30                        (function(val){
31                                args.win.scrollLeft = val[0];
32                                args.win.scrollTop = val[1];
33                        });
34                var anim = new baseFx.Animation(lang.mixin({
35                        beforeBegin: function(){
36                                if(this.curve){ delete this.curve; }
37                                var current = isWindow ? dojo._docScroll() : {x: args.win.scrollLeft, y: args.win.scrollTop};
38                                anim.curve = new Line([current.x,current.y],[current.x + delta.x, current.y + delta.y]);
39                        },
40                        onAnimate: _anim
41                },args));
42                return anim; // dojo.Animation
43        };
44        fx.smoothScroll = fxExt.smoothScroll;
45        return fxExt.smoothScroll;
46});
Note: See TracBrowser for help on using the repository browser.