funchat/Keep_it_simple_3_0_0/js/main.js
2025-06-04 12:30:34 +02:00

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);