318 lines
8.7 KiB
JavaScript
318 lines
8.7 KiB
JavaScript
(function($) {
|
|
"use strict";
|
|
var cursor = document.querySelector('.cursor');
|
|
var cursorinner = document.querySelector('.cursor2');
|
|
var a = document.querySelectorAll('a');
|
|
document.addEventListener('mousemove', function(e) {
|
|
var x = e.clientX;
|
|
var y = e.clientY;
|
|
cursor.style.transform = `translate3d(calc(${e.clientX}px - 50%), calc(${e.clientY}px - 50%), 0)`
|
|
});
|
|
$('a').hover(function() {
|
|
$('.cursor').css({});
|
|
}, function() {
|
|
$('.cursor2').css({
|
|
"background-color": "#fff"
|
|
});
|
|
});
|
|
jQuery(window).on('load', function() {
|
|
$(".preloader").delay(1600).fadeOut("slow");
|
|
});
|
|
const currentLocation = location.href;
|
|
const menuItem = document.querySelectorAll('ul li a');
|
|
const menuLength = menuItem.length;
|
|
for (let i = 0; i < menuLength; i++) {
|
|
if (menuItem[i].href === currentLocation) {
|
|
menuItem[i].className = "active";
|
|
}
|
|
}
|
|
$(window).on('scroll', function() {
|
|
if ($(this).scrollTop() > 200) {
|
|
$('.position_top').addClass('sticky');
|
|
} else {
|
|
$('.position_top').removeClass('sticky');
|
|
}
|
|
});
|
|
$('.cross-btn').on('click', function(event) {
|
|
$('.main-nav').toggleClass('slidenav');
|
|
});
|
|
$('.remove').on('click', function(event) {
|
|
$('.main-nav').removeClass('slidenav');
|
|
});
|
|
$(".main-nav .bi").on('click', function(event) {
|
|
var $fl = $(this);
|
|
$(this).parent().siblings().find('.sub-menu').slideUp();
|
|
$(this).parent().siblings().find('.bi').addClass('bi-chevron-down');
|
|
if ($fl.hasClass('bi-chevron-down')) {
|
|
$fl.removeClass('bi-chevron-down').addClass('bi-chevron-up');
|
|
} else {
|
|
$fl.removeClass('bi-chevron-up').addClass('bi-chevron-down');
|
|
}
|
|
$fl.next(".sub-menu").slideToggle();
|
|
});
|
|
$('.tab-link').on('click', function(event) {
|
|
$('.tab-link').removeClass('active');
|
|
$(this).addClass('active');
|
|
});
|
|
|
|
$('ul.isotope-menu li').on('click', function() {
|
|
$("ul.isotope-menu li").removeClass("active");
|
|
$(this).addClass("active");
|
|
var selector = $(this).attr('data-filter');
|
|
$(".project-items").isotope({
|
|
filter: selector,
|
|
animationOptions: {
|
|
duration: 750,
|
|
easing: 'linear',
|
|
queue: false,
|
|
}
|
|
});
|
|
return false;
|
|
});
|
|
$('.video-popup').magnificPopup({
|
|
disableOn: 700,
|
|
type: 'iframe',
|
|
mainClass: 'mfp-fade',
|
|
removalDelay: 160,
|
|
preloader: false,
|
|
fixedContentPos: false
|
|
});
|
|
var swiper = new Swiper(".team-slider", {
|
|
loop: true,
|
|
slidesPerView: 3,
|
|
spaceBetween: 30,
|
|
pagination: {
|
|
el: ".swiper-pagination",
|
|
clickable: true,
|
|
},
|
|
breakpoints: {
|
|
320: {
|
|
slidesPerView: 1,
|
|
},
|
|
576: {
|
|
slidesPerView: 2,
|
|
},
|
|
992: {
|
|
slidesPerView: 3,
|
|
}
|
|
}
|
|
});
|
|
var swiper = new Swiper(".project-slide", {
|
|
loop: true,
|
|
slidesPerView: 3,
|
|
spaceBetween: 30,
|
|
navigation: {
|
|
nextEl: ".swiper-button-next-c",
|
|
prevEl: ".swiper-button-prev-c",
|
|
},
|
|
breakpoints: {
|
|
320: {
|
|
slidesPerView: 1,
|
|
spaceBetween: 0,
|
|
},
|
|
576: {
|
|
slidesPerView: 2,
|
|
},
|
|
992: {
|
|
slidesPerView: 3,
|
|
}
|
|
}
|
|
});
|
|
var swiper = new Swiper(".work-process-slide", {
|
|
loop: true,
|
|
slidesPerView: 1,
|
|
navigation: {
|
|
nextEl: ".swiper-button-next-c",
|
|
prevEl: ".swiper-button-prev-c",
|
|
}
|
|
});
|
|
var swiper = new Swiper(".testimonial-slider", {
|
|
loop: true,
|
|
slidesPerView: 2,
|
|
centeredSlides: true,
|
|
speed: 1000,
|
|
spaceBetween: 30,
|
|
slideToClickedSlide: true,
|
|
autoplay: {
|
|
delay: 5000
|
|
},
|
|
pagination: {
|
|
el: ".swiper-pagination",
|
|
clickable: true,
|
|
},
|
|
navigation: {
|
|
nextEl: '.swiper-button-next',
|
|
prevEl: '.swiper-button-prev',
|
|
},
|
|
breakpoints: {
|
|
320: {
|
|
slidesPerView: 1,
|
|
},
|
|
576: {
|
|
slidesPerView: 2,
|
|
},
|
|
992: {
|
|
slidesPerView: 2,
|
|
},
|
|
1400: {
|
|
slidesPerView: 2,
|
|
},
|
|
1800: {
|
|
slidesPerView: 2,
|
|
}
|
|
}
|
|
});
|
|
var swiper = new Swiper(".partner-slider", {
|
|
loop: true,
|
|
slidesPerView: 5,
|
|
spaceBetween: 20,
|
|
navigation: {
|
|
nextEl: '.swiper-button-next-c',
|
|
prevEl: '.swiper-button-prev-c',
|
|
},
|
|
breakpoints: {
|
|
320: {
|
|
slidesPerView: 2,
|
|
},
|
|
576: {
|
|
slidesPerView: 3,
|
|
},
|
|
992: {
|
|
slidesPerView: 4,
|
|
},
|
|
1200: {
|
|
slidesPerView: 5,
|
|
}
|
|
}
|
|
});
|
|
var swiper = new Swiper(".services-slider", {
|
|
loop: true,
|
|
slidesPerView: 3,
|
|
spaceBetween: 30,
|
|
speed: 1000,
|
|
autoplay: {
|
|
delay: 5000
|
|
},
|
|
pagination: {
|
|
el: ".swiper-pagination",
|
|
clickable: true,
|
|
},
|
|
navigation: {
|
|
nextEl: '.swiper-button-next',
|
|
prevEl: '.swiper-button-prev',
|
|
},
|
|
breakpoints: {
|
|
320: {
|
|
slidesPerView: 1,
|
|
},
|
|
576: {
|
|
slidesPerView: 2,
|
|
},
|
|
992: {
|
|
slidesPerView: 3,
|
|
}
|
|
}
|
|
});
|
|
var swiper = new Swiper(".hero-slide", {
|
|
loop: false,
|
|
slidesPerView: 1,
|
|
spaceBetween: 30,
|
|
speed: 1000,
|
|
autoplay: {
|
|
delay: 5000
|
|
},
|
|
pagination: {
|
|
el: ".swiper-pagination",
|
|
clickable: true,
|
|
},
|
|
navigation: {
|
|
nextEl: '.swiper-button-next',
|
|
prevEl: '.swiper-button-prev',
|
|
},
|
|
breakpoints: {
|
|
320: {
|
|
slidesPerView: 1,
|
|
},
|
|
576: {
|
|
slidesPerView: 1,
|
|
},
|
|
992: {
|
|
slidesPerView: 1,
|
|
}
|
|
}
|
|
});
|
|
jQuery(window).on('load', function() {
|
|
new WOW().init();
|
|
window.wow = new WOW({
|
|
boxClass: 'wow',
|
|
animateClass: 'animated',
|
|
offset: 0,
|
|
mobile: true,
|
|
live: true,
|
|
offset: 100
|
|
})
|
|
window.wow.init();
|
|
});
|
|
}(jQuery));
|
|
|
|
/* Back to top */
|
|
let calcScrollValue = () => {
|
|
let scrollProgress = document.getElementById("progress");
|
|
let progressValue = document.getElementById("progress-value");
|
|
let pos = document.documentElement.scrollTop;
|
|
let calcHeight =
|
|
document.documentElement.scrollHeight -
|
|
document.documentElement.clientHeight;
|
|
let scrollValue = Math.round((pos * 100) / calcHeight);
|
|
if (pos > 100) {
|
|
scrollProgress.style.display = "grid";
|
|
} else {
|
|
scrollProgress.style.display = "none";
|
|
}
|
|
scrollProgress.addEventListener("click", () => {
|
|
document.documentElement.scrollTop = 0;
|
|
});
|
|
scrollProgress.style.background = `conic-gradient(#75dab4 ${scrollValue}%, #d7d7d7 ${scrollValue}%)`;
|
|
};
|
|
|
|
window.onscroll = calcScrollValue;
|
|
window.onload = calcScrollValue;
|
|
|
|
const counters = document.querySelectorAll('.counter');
|
|
const speed = 200; // The lower the slower
|
|
|
|
counters.forEach(counter => {
|
|
const updateCount = () => {
|
|
const target = +counter.getAttribute('data-target');
|
|
let count = +counter.innerText;
|
|
|
|
// Calculate the increment based on the difference between target and current count
|
|
const diff = target - count;
|
|
const increment = diff > 0 ? Math.ceil(diff / (speed / 10)) : -Math.ceil(-diff / (speed / 10));
|
|
|
|
// Calculate the timeout based on the increment and target value
|
|
const timeout = Math.abs(diff) > 100 ? 10 : 100;
|
|
|
|
// Check if target is reached
|
|
if (count !== target) {
|
|
// Add increment to count and output in counter
|
|
count += increment;
|
|
counter.innerText = count;
|
|
// Call function with adjusted timeout
|
|
setTimeout(updateCount, timeout);
|
|
}
|
|
};
|
|
|
|
// Initialize count to 0
|
|
counter.innerText = '0';
|
|
|
|
// Start the updateCount function
|
|
updateCount();
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|