1 | /* |
---|
2 | * jQuery UI Effects Scrollview |
---|
3 | * |
---|
4 | * Copyright (c) 2009 Philipp Simon ([email protected]) |
---|
5 | * Dual licensed under the MIT (MIT-LICENSE.txt) |
---|
6 | * and GPL (GPL-LICENSE.txt) licenses. |
---|
7 | * |
---|
8 | * Depends: |
---|
9 | * effects.core.js |
---|
10 | * |
---|
11 | */ |
---|
12 | ;(function($) { |
---|
13 | |
---|
14 | $.effects.scrollview = function(o) { |
---|
15 | return this.queue(function() { |
---|
16 | |
---|
17 | // Create element |
---|
18 | var el = $(this); |
---|
19 | |
---|
20 | // Set options |
---|
21 | $.effects.setMode(el, 'show'); |
---|
22 | var offset = o.options.offset || 10; |
---|
23 | |
---|
24 | var vpTop = $(window).scrollTop(); |
---|
25 | var lyTop = el.offset().top; |
---|
26 | |
---|
27 | if(lyTop - offset < vpTop) { |
---|
28 | scrollTo(lyTop - offset); |
---|
29 | } else { |
---|
30 | var vpHeight = self.innerHeight || $(window).height(); |
---|
31 | var lyHeight = el.height(); |
---|
32 | |
---|
33 | if (lyTop + lyHeight + offset > vpTop + vpHeight) { |
---|
34 | if (lyHeight > vpHeight) { |
---|
35 | scrollTo(lyTop - offset); |
---|
36 | } else { |
---|
37 | scrollTo(lyTop + lyHeight + offset - vpHeight); |
---|
38 | } |
---|
39 | } else { |
---|
40 | if(o.callback) o.callback.apply(el.get(0)); |
---|
41 | el.dequeue(); |
---|
42 | } |
---|
43 | } |
---|
44 | |
---|
45 | function scrollTo(y) { |
---|
46 | var animation = {'scrollTop': y}; |
---|
47 | $($.browser.safari ? 'body' : 'html').animate(animation, {queue: false, duration: o.duration, easing: o.options.easing, complete: function() { |
---|
48 | if(o.callback) o.callback.apply(el.get(0), arguments); |
---|
49 | el.dequeue(); |
---|
50 | }}); |
---|
51 | }; |
---|
52 | }); |
---|
53 | |
---|
54 | }; |
---|
55 | |
---|
56 | })(jQuery); |
---|