site-proximo/assets/js/init.js

73 lines
2.3 KiB
JavaScript
Raw Permalink Normal View History

2019-07-31 20:37:37 +02:00
(function ($) {
/**
* Get an HTMLElement using Jquery, and store them in a cache for a faster access later
* @param selector {String} The Jquery selector to use
* @return {(jQuery.fn.init | jQuery | HTMLElement)} The JQuery HTMLElement
*/
$.selector_cache = function (selector) {
if (!$.selector_cache[selector]) {
$.selector_cache[selector] = $(selector);
}
return $.selector_cache[selector];
};
})(jQuery); // Edit JQuery namespace to use the function as $.selector_cache('#elements');
$(document).ready(function () {
loadHeader();
fixheader();
});
$.selector_cache('.nav-item')
.on('mouseover', function () {
$(this).find('.link-effect').addClass('link-hovered');
})
.on('mouseleave', function () {
$(this).find('.link-effect').removeClass('link-hovered');
}).on('click', function () {
$(this).find('.link-effect').removeClass('link-hovered');
$(this).find('.link-effect').addClass('link-active');
});
/**
* Stop the header from changing height on mobile (with fullscreen browsing)
*/
function fixheader() {
if ($.selector_cache("#headerJumbotron").length > 0) {
let height = $(window).height() * 0.4;
$.selector_cache('#headerJumbotron').css('height', height);
}
}
function loadHeader() {
if ($.selector_cache("#headerJumbotron").length > 0) {
animateCss($.selector_cache('#headerTitle'), 'fadeInUp faster');
$.selector_cache('#headerTitle').css('opacity', 1);
setTimeout(function () {
animateCss($.selector_cache('#headerSubTitle'), 'fadeInUp faster');
$.selector_cache('#headerSubTitle').css('opacity', 1);
}, 100);
setTimeout(function () {
$.selector_cache('#headerTop').addClass('loaded');
}, 100);
setTimeout(function () {
$.selector_cache('#headerBottom').addClass('loaded');
}, 300);
}
}
// Using animate.css, translated into jquery
// https://github.com/daneden/animate.css
function animateCss($elem, animationName, callback) {
$elem.addClass('animated ' + animationName);
$elem.on('animationend', function () {
$elem.removeClass('animated ' + animationName);
if (typeof callback === 'function')
callback();
});
}