167 lines
No EOL
5 KiB
JavaScript
167 lines
No EOL
5 KiB
JavaScript
/* ===================================================================
|
|
* Keep It Simple 3.0.0 - Main JS
|
|
*
|
|
* ------------------------------------------------------------------- */
|
|
|
|
(function($) {
|
|
|
|
"use strict";
|
|
|
|
const cfg = {
|
|
scrollDuration : 800, // smoothscroll duration
|
|
mailChimpURL : '' // mailchimp url
|
|
};
|
|
const $WIN = $(window);
|
|
|
|
|
|
// Add the User Agent to the <html>
|
|
// will be used for IE10/IE11 detection (Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; rv:11.0))
|
|
const doc = document.documentElement;
|
|
doc.setAttribute('data-useragent', navigator.userAgent);
|
|
|
|
|
|
|
|
/* preloader
|
|
* -------------------------------------------------- */
|
|
const ssPreloader = function() {
|
|
|
|
$("html").addClass('ss-preload');
|
|
|
|
$WIN.on('load', function() {
|
|
|
|
// force page scroll position to top at page refresh
|
|
// $('html, body').animate({ scrollTop: 0 }, 'normal');
|
|
|
|
// will first fade out the loading animation
|
|
$("#loader").fadeOut("slow", function() {
|
|
// will fade out the whole DIV that covers the website.
|
|
$("#preloader").delay(300).fadeOut("slow");
|
|
});
|
|
|
|
// for hero content animations
|
|
$("html").removeClass('ss-preload');
|
|
$("html").addClass('ss-loaded');
|
|
|
|
});
|
|
};
|
|
|
|
|
|
/* mobile menu
|
|
* ---------------------------------------------------- */
|
|
const ssMobileMenu = function() {
|
|
|
|
const $toggleButton = $('.header-menu-toggle');
|
|
const $headerContent = $('.header-content');
|
|
const $siteBody = $("body");
|
|
|
|
$toggleButton.on('click', function(event){
|
|
event.preventDefault();
|
|
|
|
// at 800px and below
|
|
if (window.matchMedia('(max-width: 800px)').matches) {
|
|
$toggleButton.toggleClass('is-clicked');
|
|
$siteBody.toggleClass('menu-is-open');
|
|
}
|
|
});
|
|
|
|
|
|
$WIN.on('resize', function() {
|
|
|
|
// above 800px
|
|
if (window.matchMedia('(min-width: 801px)').matches) {
|
|
if ($siteBody.hasClass("menu-is-open")) $siteBody.removeClass("menu-is-open");
|
|
if ($toggleButton.hasClass("is-clicked")) $toggleButton.removeClass("is-clicked");
|
|
}
|
|
});
|
|
|
|
// open (or close) submenu items in mobile view menu.
|
|
// close all the other open submenu items.
|
|
$('.s-header__nav .has-children').children('a').on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
// at 800px and below
|
|
if (window.matchMedia('(max-width: 800px)').matches) {
|
|
|
|
$(this).toggleClass('sub-menu-is-open')
|
|
.next('ul')
|
|
.slideToggle(200)
|
|
.end()
|
|
.parent('.has-children')
|
|
.siblings('.has-children')
|
|
.children('a')
|
|
.removeClass('sub-menu-is-open')
|
|
.next('ul')
|
|
.slideUp(200);
|
|
|
|
}
|
|
});
|
|
|
|
};
|
|
|
|
|
|
/* alert boxes
|
|
* ------------------------------------------------------ */
|
|
const ssAlertBoxes = function() {
|
|
|
|
$('.alert-box').on('click', '.alert-box__close', function() {
|
|
$(this).parent().fadeOut(500);
|
|
});
|
|
|
|
};
|
|
|
|
|
|
/* smooth scrolling
|
|
* ------------------------------------------------------ */
|
|
const ssSmoothScroll = function() {
|
|
|
|
$('.smoothscroll').on('click', function (e) {
|
|
const target = this.hash;
|
|
const $target = $(target);
|
|
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
$('html, body').stop().animate({
|
|
'scrollTop': $target.offset().top
|
|
}, cfg.scrollDuration, 'swing').promise().done(function () {
|
|
window.location.hash = target;
|
|
});
|
|
});
|
|
|
|
};
|
|
|
|
|
|
/* back to top
|
|
* ------------------------------------------------------ */
|
|
const ssBackToTop = function() {
|
|
|
|
const pxShow = 800;
|
|
const $goTopButton = $(".ss-go-top")
|
|
|
|
// Show or hide the button
|
|
if ($(window).scrollTop() >= pxShow) $goTopButton.addClass('link-is-visible');
|
|
|
|
$(window).on('scroll', function() {
|
|
if ($(window).scrollTop() >= pxShow) {
|
|
if(!$goTopButton.hasClass('link-is-visible')) $goTopButton.addClass('link-is-visible')
|
|
} else {
|
|
$goTopButton.removeClass('link-is-visible')
|
|
}
|
|
});
|
|
};
|
|
|
|
|
|
|
|
/* initialize
|
|
* ------------------------------------------------------ */
|
|
(function ssInit() {
|
|
|
|
ssPreloader();
|
|
ssMobileMenu();
|
|
ssAlertBoxes();
|
|
ssSmoothScroll();
|
|
ssBackToTop();
|
|
|
|
})();
|
|
|
|
})(jQuery); |