forked from libre-solutions/website
258 lines
7.3 KiB
JavaScript
258 lines
7.3 KiB
JavaScript
|
/* ===================================================================
|
||
|
* Sublime - Main JS
|
||
|
*
|
||
|
* ------------------------------------------------------------------- */
|
||
|
|
||
|
(function($) {
|
||
|
|
||
|
"use strict";
|
||
|
|
||
|
var cfg = {
|
||
|
scrollDuration : 800, // smoothscroll duration
|
||
|
mailChimpURL : 'https://facebook.us8.list-manage.com/subscribe/post?u=cdb7b577e41181934ed6a6a44&id=e6957d85dc' // mailchimp url
|
||
|
},
|
||
|
|
||
|
$WIN = $(window);
|
||
|
|
||
|
// Add the User Agent to the <html>
|
||
|
// will be used for IE10 detection (Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0))
|
||
|
var doc = document.documentElement;
|
||
|
doc.setAttribute('data-useragent', navigator.userAgent);
|
||
|
|
||
|
// svg fallback
|
||
|
if (!Modernizr.svg) {
|
||
|
$(".header-logo img").attr("src", "images/logo.png");
|
||
|
}
|
||
|
|
||
|
|
||
|
/* Preloader
|
||
|
* -------------------------------------------------- */
|
||
|
var 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');
|
||
|
|
||
|
});
|
||
|
};
|
||
|
|
||
|
|
||
|
/* Menu on Scrolldown
|
||
|
* ------------------------------------------------------ */
|
||
|
var ssMenuOnScrolldown = function() {
|
||
|
|
||
|
var menuTrigger = $('.header-menu-toggle');
|
||
|
|
||
|
$WIN.on('scroll', function() {
|
||
|
|
||
|
if ($WIN.scrollTop() > 150) {
|
||
|
menuTrigger.addClass('opaque');
|
||
|
}
|
||
|
else {
|
||
|
menuTrigger.removeClass('opaque');
|
||
|
}
|
||
|
|
||
|
});
|
||
|
};
|
||
|
|
||
|
|
||
|
/* OffCanvas Menu
|
||
|
* ------------------------------------------------------ */
|
||
|
var ssOffCanvas = function() {
|
||
|
|
||
|
var menuTrigger = $('.header-menu-toggle'),
|
||
|
nav = $('.header-nav'),
|
||
|
closeButton = nav.find('.header-nav__close'),
|
||
|
siteBody = $('body'),
|
||
|
mainContents = $('section, footer');
|
||
|
|
||
|
// open-close menu by clicking on the menu icon
|
||
|
menuTrigger.on('click', function(e){
|
||
|
e.preventDefault();
|
||
|
siteBody.toggleClass('menu-is-open');
|
||
|
});
|
||
|
|
||
|
// close menu by clicking the close button
|
||
|
closeButton.on('click', function(e){
|
||
|
e.preventDefault();
|
||
|
menuTrigger.trigger('click');
|
||
|
});
|
||
|
|
||
|
// close menu clicking outside the menu itself
|
||
|
siteBody.on('click', function(e){
|
||
|
if( !$(e.target).is('.header-nav, .header-nav__content, .header-menu-toggle, .header-menu-toggle span') ) {
|
||
|
siteBody.removeClass('menu-is-open');
|
||
|
}
|
||
|
});
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
/* Masonry
|
||
|
* ---------------------------------------------------- */
|
||
|
var ssMasonryFolio = function () {
|
||
|
|
||
|
var containerBricks = $('.masonry');
|
||
|
|
||
|
containerBricks.imagesLoaded(function () {
|
||
|
containerBricks.masonry({
|
||
|
itemSelector: '.masonry__brick',
|
||
|
resize: true
|
||
|
});
|
||
|
});
|
||
|
};
|
||
|
|
||
|
|
||
|
/* photoswipe
|
||
|
* ----------------------------------------------------- */
|
||
|
var ssPhotoswipe = function() {
|
||
|
var items = [],
|
||
|
$pswp = $('.pswp')[0],
|
||
|
$folioItems = $('.item-folio');
|
||
|
|
||
|
// get items
|
||
|
$folioItems.each( function(i) {
|
||
|
|
||
|
var $folio = $(this),
|
||
|
$thumbLink = $folio.find('.thumb-link'),
|
||
|
$title = $folio.find('.item-folio__title'),
|
||
|
$caption = $folio.find('.item-folio__caption'),
|
||
|
$titleText = '<h4>' + $.trim($title.html()) + '</h4>',
|
||
|
$captionText = $.trim($caption.html()),
|
||
|
$href = $thumbLink.attr('href'),
|
||
|
$size = $thumbLink.data('size').split('x'),
|
||
|
$width = $size[0],
|
||
|
$height = $size[1];
|
||
|
|
||
|
var item = {
|
||
|
src : $href,
|
||
|
w : $width,
|
||
|
h : $height
|
||
|
}
|
||
|
|
||
|
if ($caption.length > 0) {
|
||
|
item.title = $.trim($titleText + $captionText);
|
||
|
}
|
||
|
|
||
|
items.push(item);
|
||
|
});
|
||
|
|
||
|
// bind click event
|
||
|
$folioItems.each(function(i) {
|
||
|
|
||
|
$(this).on('click', function(e) {
|
||
|
e.preventDefault();
|
||
|
var options = {
|
||
|
index: i,
|
||
|
showHideOpacity: true
|
||
|
}
|
||
|
|
||
|
// initialize PhotoSwipe
|
||
|
var lightBox = new PhotoSwipe($pswp, PhotoSwipeUI_Default, items, options);
|
||
|
lightBox.init();
|
||
|
});
|
||
|
|
||
|
});
|
||
|
};
|
||
|
|
||
|
|
||
|
/* slick slider
|
||
|
* ------------------------------------------------------ */
|
||
|
var ssSlickSlider = function() {
|
||
|
|
||
|
$('.testimonials__slider').slick({
|
||
|
arrows: false,
|
||
|
dots: true,
|
||
|
infinite: true,
|
||
|
slidesToShow: 1,
|
||
|
slidesToScroll: 1,
|
||
|
pauseOnFocus: false,
|
||
|
autoplaySpeed: 1500
|
||
|
});
|
||
|
};
|
||
|
|
||
|
|
||
|
/* Smooth Scrolling
|
||
|
* ------------------------------------------------------ */
|
||
|
var ssSmoothScroll = function() {
|
||
|
|
||
|
$('.smoothscroll').on('click', function (e) {
|
||
|
var target = this.hash,
|
||
|
$target = $(target);
|
||
|
|
||
|
e.preventDefault();
|
||
|
e.stopPropagation();
|
||
|
|
||
|
$('html, body').stop().animate({
|
||
|
'scrollTop': $target.offset().top
|
||
|
}, cfg.scrollDuration, 'swing').promise().done(function () {
|
||
|
|
||
|
// check if menu is open
|
||
|
if ($('body').hasClass('menu-is-open')) {
|
||
|
$('.header-menu-toggle').trigger('click');
|
||
|
}
|
||
|
|
||
|
window.location.hash = target;
|
||
|
});
|
||
|
});
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
/* Alert Boxes
|
||
|
* ------------------------------------------------------ */
|
||
|
var ssAlertBoxes = function() {
|
||
|
|
||
|
$('.alert-box').on('click', '.alert-box__close', function() {
|
||
|
$(this).parent().fadeOut(500);
|
||
|
});
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
/* Animate On Scroll
|
||
|
* ------------------------------------------------------ */
|
||
|
var ssAOS = function() {
|
||
|
|
||
|
AOS.init( {
|
||
|
offset: 200,
|
||
|
duration: 600,
|
||
|
easing: 'ease-in-sine',
|
||
|
delay: 300,
|
||
|
once: true,
|
||
|
disable: 'mobile'
|
||
|
});
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
/* Initialize
|
||
|
* ------------------------------------------------------ */
|
||
|
(function clInit() {
|
||
|
|
||
|
ssPreloader();
|
||
|
ssMenuOnScrolldown();
|
||
|
ssOffCanvas();
|
||
|
ssMasonryFolio();
|
||
|
ssPhotoswipe();
|
||
|
ssSlickSlider();
|
||
|
ssSmoothScroll();
|
||
|
ssAlertBoxes();
|
||
|
ssAOS();
|
||
|
|
||
|
})();
|
||
|
|
||
|
})(jQuery);
|