rejuvallife/resources/themestyle/js/front-page-landing.js
2024-10-25 01:02:11 +05:00

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