Files
goldable/assets/js/main.js
2025-04-13 16:35:28 +08:00

361 lines
8.1 KiB
JavaScript

(function($) {
"use strict";
/**
* [isMobile description]
* @type {Object}
*/
window.isMobile = {
Android: function() {
return navigator.userAgent.match(/Android/i);
},
BlackBerry: function() {
return navigator.userAgent.match(/BlackBerry/i);
},
iOS: function() {
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
},
Opera: function() {
return navigator.userAgent.match(/Opera Mini/i);
},
Windows: function() {
return navigator.userAgent.match(/IEMobile/i);
},
any: function() {
return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
}
}
window.isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);
window.windowHeight = window.innerHeight;
window.windowWidth = window.innerWidth;
/**
* owlCarousel
*/
$('.carousel__element').each(function() {
var self = $(this),
optData = eval('(' + self.attr('data-options') + ')'),
optDefault = {
items: 1,
nav: true,
dot: true,
loop: true
},
options = $.extend(optDefault, optData);
self.owlCarousel(options);
});
var selectors = [
'iframe[src*="player.vimeo.com"]',
'iframe[src*="youtube.com"]',
'iframe[src*="youtube-nocookie.com"]',
'iframe[src*="kickstarter.com"][src*="video.html"]',
'object',
'embed'
];
var $allVideos = $('body').find(selectors.join(','));
$allVideos.each(function() {
var vid = $(this),
vidWidth = vid.outerWidth(),
vidHeight = vid.outerHeight(),
ratio = (vidHeight / vidWidth) * 100;
$allVideos
.addClass('embed-responsive-item');
if (ratio == 75) {
$allVideos
.wrap('<div class="embed-responsive embed-responsive-4by3"></div>');
} else {
$allVideos
.wrap('<div class="embed-responsive embed-responsive-16by9"></div>');
}
});
/**
* Match height
*/
$('.row-eq-height > [class*="col-"]').matchHeight();
var myEfficientFn = debounce(function() {
$('.row-eq-height > [class*="col-"]').matchHeight();
}, 250);
window.addEventListener('resize', myEfficientFn);
/**
* [debounce description]
* @param {[type]} func [description]
* @param {[type]} wait [description]
* @param {[type]} immediate [description]
* @return {[type]} [description]
*/
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
}
$('.js-counter').countUp();
/**
* Countdown
*/
$('.countdown__module').each(function() {
var self = $(this),
_date = self.attr('data-date'),
_strf = self.html();
self.countdown(_date, function(event) {
self.html(event.strftime(_strf));
}).removeClass("hide");
});
// /**
// * Dropdown
// */
$('[data-init="dropdown"]').each(function(index, el) {
$(el).find('a.dropdown__toggle').on('click', function(event) {
event.preventDefault();
$(el).find('.dropdown__content').toggleClass('open');
$(el).toggleClass('open');
});
$(document).on('click', function(event) {
var $content = $(el).find('.dropdown__content');
if ($.contains(el, event.target)) {
return;
}
if ($(el).hasClass('open')) {
$(el).removeClass('open');
}
if ($content.hasClass('open')) {
$content.removeClass('open');
}
});
});
function consultForm(argument) {
var _hForm = $('.js-consult-form .js-consult-form__content').outerHeight() / 2;
var _paddingTop = _hForm + 50;
if(windowWidth > 1200) {
var _paddingTop = _hForm + 200;
}
$('.js-consult-form .js-consult-form__content').css('bottom', - _hForm);
if(windowWidth > 768) {
$('.js-consult-form + *').css('padding-top', _paddingTop);
}
}
consultForm();
var myEfficientFn = debounce(function() {
consultForm();
}, 250);
window.addEventListener('resize', myEfficientFn);
/**
* Masonry
*/
$('.grid__inner').masonry({
itemSelector: '.grid-item',
columnWidth: '.grid-sizer',
});
/**
* grid css
*/
$.fn.reCalWidth = function() {
var $self = $(this);
$self.on('reCalWidth', function() {
var _self = $(this);
_self.css('width', '');
var width = Math.floor(_self.width());
_self.css('width', width + 'px');
var height = Math.floor(_self.parent().children('.wide').width()/2);
_self.parent().children('.wide').css('height', height + 'px');
});
$(window).on('resize', function() {
$self.trigger('reCalWidth');
});
}
function work() {
$('.grid-css').each(function() {
var workWrapper = $(this),
workContainer = $('.grid__inner', workWrapper),
filters = $('.filter', workWrapper),
filterCurrent = $('.current a', filters),
filterLiCurrent = $('.current', filters),
duration = 0.3;
workContainer.imagesLoaded( function() {
workContainer.isotope({
layoutMode: 'masonry',
itemSelector: '.grid-item',
transitionDuration: duration + 's',
masonry: {
columnWidth: '.grid-sizer'
},
// hiddenStyle: {},
// visibleStyle: {}
});
});
filters.on('click', 'a', function(e) {
e.preventDefault();
var $el = $(this);
var selector = $el.attr('data-filter');
filters.find('.current').removeClass('current');
$el.parent().addClass('current');
workContainer.isotope({
filter: selector
});
});
$('.grid-item', workWrapper).reCalWidth();
});
}
work();
$('.js-post-effect').each(function() {
var contentHeight = $(this).find('.post-02__content').height() + 30;
if(windowWidth > 768) {
var contentHeight = $(this).find('.post-02__content').height() + 50;
}
$(this).find('.post-02__body').css('transform', 'translateY(' + contentHeight + 'px)');
$(this).hover(function() {
$(this).find('.post-02__body').css('transform', 'translateY(' + 0 + 'px)');
}, function() {
$(this).find('.post-02__body').css('transform', 'translateY(' + contentHeight + 'px)');
});
});
$(document).ready(function(){
$('a[href^="#"].clickScroll').on('click',function (e) {
e.preventDefault();
var target = this.hash;
var $target = $(target);
$('html, body').stop().animate({
'scrollTop': $target.offset().top
}, 900, 'swing', function() {
window.location.hash = target;
});
});
});
$('[data-init="video"]').each(function(index, el) {
var el = $(this);
var iframe = $(this).find('iframe');
$(this).find('.video-button').click(function(e) {
el.addClass('play-video');
iframe[0].src += "?enablejsapi=1&autoplay=1";
e.preventDefault();
});
});
$('#back-to-top').on('click', function (e) {
e.preventDefault();
$('html,body').animate({
scrollTop: 0
}, 700);
});
/**
* Menu
*/
$('.consult-nav').dropdownMenu({
menuClass: 'consult-menu',
breakpoint: 992,
toggleClass: 'active',
classButtonToggle: 'navbar-toggle',
subMenu: {
class: 'sub-menu',
parentClass: 'menu-item-has-children',
toggleClass: 'active'
}
});
$(window).scroll(function() {
if ($(document).scrollTop() > 100) {
$('.header').addClass('shrink');
} else {
$('.header').removeClass('shrink');
}
});
/**
* Event click navbar-toggle
*/
$('.navbar-toggle').each(function(index, el) {
$(el).on('click', function(event) {
event.preventDefault();
$(el).toggleClass('open');
});
$(document).on('click', function(event) {
var $content = $(el);
if ($.contains(el, event.target)) {
return;
}
if ($(el).hasClass('open')) {
$(el).removeClass('open');
}
});
});
/**
* Event click search-form
*/
$('.search-form').each(function(index, el) {
$(el).on('click', function(event) {
event.preventDefault();
$(el).addClass('open');
});
$(document).on('click', function(event) {
var $content = $(el);
if ($.contains(el, event.target)) {
return;
}
if ($(el).hasClass('open')) {
$(el).removeClass('open');
}
});
});
function slider() {
var windowWidth = $(window).innerWidth();
var containerWidth = $('.container').width();
var outerPadding = (windowWidth - containerWidth)/2;
if(windowWidth > 1200) {
$('.js-consult-slider').css('marginRight', - outerPadding);
}
}
slider();
var myEfficientFn = debounce(function() {
slider();
}, 250);
window.addEventListener('resize', myEfficientFn);
})(jQuery);