Skip to content

Commit

Permalink
Merge pull request #67 from pushpesh4u/master
Browse files Browse the repository at this point in the history
Customised for zepto.js
  • Loading branch information
morr committed Sep 28, 2018
2 parents f7e18b6 + bb9da52 commit 61893b0
Showing 1 changed file with 98 additions and 0 deletions.
98 changes: 98 additions & 0 deletions zepto.appear.js
@@ -0,0 +1,98 @@
/*
* jQuery appear plugin - customised for Zepto.js
*
* Copyright (c) 2012 Andrey Sidorov
* licensed under MIT license.
*
* https://github.com/morr/jquery.appear/
*
* Version: 0.3.3
*/
(function($) {
var selectors = [];

var check_binded = false;
var check_lock = false;
var defaults = {
interval: 250,
force_process: false
}
var $window = $(window);

var $prior_appeared;

function process() {
check_lock = false;
for (var index = 0; index < selectors.length; index++) {
var $appeared = $(selectors[index]).filter(function() {
return $(this).is(':appeared');
});

$appeared.trigger('appear', [$appeared]);

if ($prior_appeared) {
var $disappeared = $prior_appeared.not($appeared);
$disappeared.trigger('disappear', [$disappeared]);
}
$prior_appeared = $appeared;
}
}

// "appeared" custom filter
$.extend($.expr[':'], {
appeared : function() {
var $element = $(this);
if (!$element.is(':visible')) {
return false;
}

var window_left = $window.scrollLeft();
var window_top = $window.scrollTop();
var offset = $element.offset();
var left = offset.left;
var top = offset.top;

if (top + $element.height() >= window_top &&
top - ($element.data('appear-top-offset') || 0) <= window_top + $window.height() &&
left + $element.width() >= window_left &&
left - ($element.data('appear-left-offset') || 0) <= window_left + $window.width()) {
return this;
} else {
return false;
}
}
});

$.fn.appear = function(options) {
var opts = $.extend({}, defaults, options || {});
var selector = this.selector || this;
if (!check_binded) {
var on_check = function() {
if (check_lock) {
return;
}
check_lock = true;

setTimeout(process, opts.interval);
};

$(window).scroll(on_check).resize(on_check);
check_binded = true;
}

if (opts.force_process) {
setTimeout(process, opts.interval);
}
selectors.push(selector);
return $(selector);
}


$.force_appear = function() {
if (check_binded) {
process();
return true;
};
return false;
}
})(Zepto);

0 comments on commit 61893b0

Please sign in to comment.