Author: | timManas |
---|---|
Views Total: | 1,655 views |
Official Page: | Go to website |
Last Update: | April 19, 2021 |
License: | MIT |
Preview:

Description:
A vertical split/double slider carousel written in vanilla JavaScript.
How to use it:
1. Add left & right slides to the slider carousel.
<div class="slider-container"> <div class="left-slide"> <div style="background-color: #fd3555"> <h1>Slide 1</h1> <p>This is slide 1</p> </div> <div style="background-color: #2a86ba"> <h1>Slide 2</h1> <p>This is slide 2</p> </div> <div style="background-color: #252e33"> <h1>Slide 3</h1> <p>This is slide 3</p> </div> <div style="background-color: #ffb866"> <h1>Slide 4</h1> <p>This is slide 4</p> </div> </div> <div class="right-slide"> <div style="background-image: url('1.jpg');"></div> <div style="background-image: url('2.jpg');"></div> <div style="background-image: url('3.jpg');"></div> <div style="background-image: url('4.jpg');"></div> </div> <div class="action-buttons"> <button class="down-button"> <i class="fas fa-arrow-down"></i> </button> <button class="up-button"> <i class="fas fa-arrow-up"></i> </button> </div> </div>
2. Required styles for the slider carousel.
* { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: 'Open Sans', sans-serif; height: 100vh; } .slider-container { position: relative; overflow: hidden; width: 100vw; height: 100vh; } .left-slide { height: 100%; width: 35%; position: absolute; top: 0; left: 0; transition: transform 3.5s ease-in-out; } .left-slide > div { height: 100%; width: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; color: #fff; } .left-slide h1 { font-size: 40px; margin-bottom: 10px; margin-top: -30px; } .right-slide { height: 100%; position: absolute; top: 0; left: 35%; width: 65%; transition: transform 0.5s ease-in-out; } .right-slide > div { background-repeat: no-repeat; background-size: cover; background-position: center center; height: 100%; width: 100%; } button { background-color: #fff; border: none; color: #aaa; cursor: pointer; font-size: 16px; padding: 15px; } button:hover { color: #222; } button:focus { outline: none; } .slider-container .action-buttons button { position: absolute; left: 35%; top: 50%; z-index: 100; } .slider-container .action-buttons .down-button { transform: translateX(-100%); border-top-left-radius: 5px; border-bottom-left-radius: 5px; } .slider-container .action-buttons .up-button { transform: translateY(-100%); border-top-right-radius: 5px; border-bottom-right-radius: 5px; }
3. The main script to activate the slider carousel.
const sliderContainer = document.querySelector('.slider-container') const slideRight = document.querySelector('.right-slide') const slideLeft = document.querySelector('.left-slide') const upButton = document.querySelector('.up-button') const downButton = document.querySelector('.down-button') const slidesLength = slideRight.querySelectorAll('div').length let activeSlideIndex = 0 slideLeft.style.top = `-${(slidesLength - 1) * 100}vh` upButton.addEventListener('click', () => changeSlide('up')) downButton.addEventListener('click', () => changeSlide('down')) const changeSlide = (direction) => { const sliderHeight = sliderContainer.clientHeight if (direction === 'up') { activeSlideIndex++ if (activeSlideIndex > slidesLength - 1) { activeSlideIndex = 0 } } else if (direction === 'down') { activeSlideIndex-- if (activeSlideIndex < 0) { activeSlideIndex = slidesLength - 1 } } slideRight.style.transform = `translateY(-${ activeSlideIndex * sliderHeight }px)` slideLeft.style.transform = `translateY(${activeSlideIndex * sliderHeight}px)` }