area-51/js/animate.js

155 lines
4.1 KiB
JavaScript
Raw Permalink Normal View History

2025-01-30 04:21:55 +01:00
/*
* jQuery appear plugin
*
* Copyright (c) 2012 Andrey Sidorov
* licensed under MIT license.
*
* https://github.com/morr/jquery.appear/
*
* Version: 0.3.3
*/
if ($(window).width() > 1024){
(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
$.expr[':']['appeared'] = function(element) {
var $element = $(element);
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 true;
} else {
return false;
}
}
$.fn.extend({
// watching for element's appearance in browser viewport
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);
}
});
$.extend({
// force elements's appearance check
force_appear: function() {
if (check_binded) {
process();
return true;
};
return false;
}
});
})(jQuery);
var isMobile = false;
(function( $ ) {
"use strict";
$(function() {
/* --- MOBILE DETECT --- */
if (navigator.userAgent.match(/Android/i) ||
navigator.userAgent.match(/webOS/i) ||
navigator.userAgent.match(/iPhone/i) ||
navigator.userAgent.match(/iPad/i)||
navigator.userAgent.match(/iPod/i) ||
navigator.userAgent.match(/BlackBerry/i)) {
isMobile = true;
}
/* --- ADD NECESSARY CLASS --- */
if (isMobile == true) {
$('.animated').removeClass('animated');
$('.op0').removeClass('op0');
}
/* --- ANIMATE CONTENT --- */
if (isMobile == false) {
$('*[data-animated]').addClass('animated');
}
function animated_contents() {
$(".animated:appeared").each(function (i) {
var $this = $(this),
animated = $(this).data('animated');
setTimeout(function () {
$this.addClass(animated);
}, 100 * i);
});
}
if (isMobile == false) {
animated_contents();
$(window).scroll(function () {
animated_contents();
});
}
});
}(jQuery));
}