| Server IP : 192.241.186.36 / Your IP : 216.73.216.164 Web Server : Apache/2.4.29 (Ubuntu) System : Linux webserver7 4.15.0-194-generic #205-Ubuntu SMP Fri Sep 16 19:49:27 UTC 2022 x86_64 User : root ( 0) PHP Version : 7.4.32 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/myairtrip/offers/js/ |
Upload File : |
const track = document.querySelector('.carousel-track');
const cards = document.querySelectorAll('.card');
const prevBtn = document.querySelector('.prev-btn');
const nextBtn = document.querySelector('.next-btn');
let currentIndex = 1; // Start at the first actual card (index 1)
const cardWidth = cards[0].offsetWidth + 20; // Card width + margin
// Initial position: Move to the first card (hide cloned last card)
track.style.transform = `translateX(-${cardWidth * currentIndex}px)`;
// Move to the next slide
function moveToNext() {
currentIndex++;
track.style.transition = 'transform 0.5s ease-in-out'; // Smooth slide
track.style.transform = `translateX(-${cardWidth * currentIndex}px)`;
// When the cloned first card is reached, snap back to the actual first card
if (currentIndex === cards.length - 3) {
setTimeout(() => {
track.style.transition = 'none'; // Disable transition for the snap
currentIndex = 1; // Go to the actual first card
track.style.transform = `translateX(-${cardWidth * currentIndex}px)`;
}, 500); // Wait for the sliding transition to finish
}
}
// Move to the previous slide
function moveToPrev() {
currentIndex--;
track.style.transition = 'transform 0.5s ease-in-out'; // Smooth slide
track.style.transform = `translateX(-${cardWidth * currentIndex}px)`;
// When the cloned last card is reached, snap back to the actual last card
if (currentIndex === 0) {
setTimeout(() => {
track.style.transition = 'none'; // Disable transition for the snap
currentIndex = cards.length - 3; // Go to the actual last card
track.style.transform = `translateX(-${cardWidth * currentIndex}px)`;
}, 500); // Wait for the sliding transition to finish
}
}
// Event listeners for buttons
nextBtn.addEventListener('click', moveToNext);
prevBtn.addEventListener('click', moveToPrev);