147 lines
4.4 KiB
JavaScript
147 lines
4.4 KiB
JavaScript
/**
|
|
* Main - Front Pages
|
|
*/
|
|
'use strict';
|
|
|
|
(function () {
|
|
const nav = document.querySelector('.layout-navbar'),
|
|
heroAnimation = document.getElementById('hero-animation'),
|
|
animationImg = document.querySelectorAll('.hero-dashboard-img'),
|
|
animationElements = document.querySelectorAll('.hero-elements-img'),
|
|
swiperLogos = document.getElementById('swiper-clients-logos'),
|
|
swiperReviews = document.getElementById('swiper-reviews'),
|
|
ReviewsPreviousBtn = document.getElementById('reviews-previous-btn'),
|
|
ReviewsNextBtn = document.getElementById('reviews-next-btn'),
|
|
ReviewsSliderPrev = document.querySelector('.swiper-button-prev'),
|
|
ReviewsSliderNext = document.querySelector('.swiper-button-next'),
|
|
priceDurationToggler = document.querySelector('.price-duration-toggler'),
|
|
priceMonthlyList = [].slice.call(document.querySelectorAll('.price-monthly')),
|
|
priceYearlyList = [].slice.call(document.querySelectorAll('.price-yearly'));
|
|
|
|
// Hero
|
|
const mediaQueryXL = '1200';
|
|
const width = screen.width;
|
|
if (width >= mediaQueryXL && heroAnimation) {
|
|
heroAnimation.addEventListener('mousemove', function parallax(e) {
|
|
animationElements.forEach(layer => {
|
|
layer.style.transform = 'translateZ(1rem)';
|
|
});
|
|
animationImg.forEach(layer => {
|
|
let x = (window.innerWidth - e.pageX * 2) / 100;
|
|
let y = (window.innerHeight - e.pageY * 2) / 100;
|
|
layer.style.transform = `perspective(1200px) rotateX(${y}deg) rotateY(${x}deg) scale3d(1, 1, 1)`;
|
|
});
|
|
});
|
|
nav.addEventListener('mousemove', function parallax(e) {
|
|
animationElements.forEach(layer => {
|
|
layer.style.transform = 'translateZ(1rem)';
|
|
});
|
|
animationImg.forEach(layer => {
|
|
let x = (window.innerWidth - e.pageX * 2) / 100;
|
|
let y = (window.innerHeight - e.pageY * 2) / 100;
|
|
layer.style.transform = `perspective(1200px) rotateX(${y}deg) rotateY(${x}deg) scale3d(1, 1, 1)`;
|
|
});
|
|
});
|
|
|
|
heroAnimation.addEventListener('mouseout', function () {
|
|
animationElements.forEach(layer => {
|
|
layer.style.transform = 'translateZ(0)';
|
|
});
|
|
animationImg.forEach(layer => {
|
|
layer.style.transform = 'perspective(1200px) scale(1) rotateX(0) rotateY(0)';
|
|
});
|
|
});
|
|
}
|
|
|
|
// swiper carousel
|
|
// Customers reviews
|
|
// -----------------------------------
|
|
if (swiperReviews) {
|
|
new Swiper(swiperReviews, {
|
|
slidesPerView: 1,
|
|
spaceBetween: 5,
|
|
grabCursor: true,
|
|
autoplay: {
|
|
delay: 3000,
|
|
disableOnInteraction: false
|
|
},
|
|
loop: true,
|
|
loopAdditionalSlides: 1,
|
|
navigation: {
|
|
nextEl: '.swiper-button-next',
|
|
prevEl: '.swiper-button-prev'
|
|
},
|
|
breakpoints: {
|
|
1200: {
|
|
slidesPerView: 3,
|
|
spaceBetween: 26
|
|
},
|
|
992: {
|
|
slidesPerView: 2,
|
|
spaceBetween: 20
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
// Reviews slider next and previous
|
|
// -----------------------------------
|
|
// Add click event listener to next button
|
|
ReviewsNextBtn.addEventListener('click', function () {
|
|
ReviewsSliderNext.click();
|
|
});
|
|
ReviewsPreviousBtn.addEventListener('click', function () {
|
|
ReviewsSliderPrev.click();
|
|
});
|
|
|
|
// Review client logo
|
|
// -----------------------------------
|
|
if (swiperLogos) {
|
|
new Swiper(swiperLogos, {
|
|
slidesPerView: 2,
|
|
autoplay: {
|
|
delay: 3000,
|
|
disableOnInteraction: false
|
|
},
|
|
breakpoints: {
|
|
992: {
|
|
slidesPerView: 5
|
|
},
|
|
768: {
|
|
slidesPerView: 3
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
// Pricing Plans
|
|
// -----------------------------------
|
|
document.addEventListener('DOMContentLoaded', function (event) {
|
|
function togglePrice() {
|
|
if (priceDurationToggler.checked) {
|
|
// If checked
|
|
priceYearlyList.map(function (yearEl) {
|
|
yearEl.classList.remove('d-none');
|
|
});
|
|
priceMonthlyList.map(function (monthEl) {
|
|
monthEl.classList.add('d-none');
|
|
});
|
|
} else {
|
|
// If not checked
|
|
priceYearlyList.map(function (yearEl) {
|
|
yearEl.classList.add('d-none');
|
|
});
|
|
priceMonthlyList.map(function (monthEl) {
|
|
monthEl.classList.remove('d-none');
|
|
});
|
|
}
|
|
}
|
|
// togglePrice Event Listener
|
|
togglePrice();
|
|
|
|
priceDurationToggler.onchange = function () {
|
|
togglePrice();
|
|
};
|
|
});
|
|
})();
|