Skip to content
This repository was archived by the owner on May 14, 2024. It is now read-only.

Commit bb9da52

Browse files
authored
Customised for zepto.js
Changes in the file to adapt to Zepto.js
1 parent f7e18b6 commit bb9da52

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

zepto.appear.js

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
/*
2+
* jQuery appear plugin - customised for Zepto.js
3+
*
4+
* Copyright (c) 2012 Andrey Sidorov
5+
* licensed under MIT license.
6+
*
7+
* https://github.com/morr/jquery.appear/
8+
*
9+
* Version: 0.3.3
10+
*/
11+
(function($) {
12+
var selectors = [];
13+
14+
var check_binded = false;
15+
var check_lock = false;
16+
var defaults = {
17+
interval: 250,
18+
force_process: false
19+
}
20+
var $window = $(window);
21+
22+
var $prior_appeared;
23+
24+
function process() {
25+
check_lock = false;
26+
for (var index = 0; index < selectors.length; index++) {
27+
var $appeared = $(selectors[index]).filter(function() {
28+
return $(this).is(':appeared');
29+
});
30+
31+
$appeared.trigger('appear', [$appeared]);
32+
33+
if ($prior_appeared) {
34+
var $disappeared = $prior_appeared.not($appeared);
35+
$disappeared.trigger('disappear', [$disappeared]);
36+
}
37+
$prior_appeared = $appeared;
38+
}
39+
}
40+
41+
// "appeared" custom filter
42+
$.extend($.expr[':'], {
43+
appeared : function() {
44+
var $element = $(this);
45+
if (!$element.is(':visible')) {
46+
return false;
47+
}
48+
49+
var window_left = $window.scrollLeft();
50+
var window_top = $window.scrollTop();
51+
var offset = $element.offset();
52+
var left = offset.left;
53+
var top = offset.top;
54+
55+
if (top + $element.height() >= window_top &&
56+
top - ($element.data('appear-top-offset') || 0) <= window_top + $window.height() &&
57+
left + $element.width() >= window_left &&
58+
left - ($element.data('appear-left-offset') || 0) <= window_left + $window.width()) {
59+
return this;
60+
} else {
61+
return false;
62+
}
63+
}
64+
});
65+
66+
$.fn.appear = function(options) {
67+
var opts = $.extend({}, defaults, options || {});
68+
var selector = this.selector || this;
69+
if (!check_binded) {
70+
var on_check = function() {
71+
if (check_lock) {
72+
return;
73+
}
74+
check_lock = true;
75+
76+
setTimeout(process, opts.interval);
77+
};
78+
79+
$(window).scroll(on_check).resize(on_check);
80+
check_binded = true;
81+
}
82+
83+
if (opts.force_process) {
84+
setTimeout(process, opts.interval);
85+
}
86+
selectors.push(selector);
87+
return $(selector);
88+
}
89+
90+
91+
$.force_appear = function() {
92+
if (check_binded) {
93+
process();
94+
return true;
95+
};
96+
return false;
97+
}
98+
})(Zepto);

0 commit comments

Comments
 (0)