Vertical Split Slider With jQuery And CSS3
File Size: | 12.6 KB |
---|---|
Views Total: | 9291 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |
A jQuery and CSS3 based vertical split slider concept that smoothly slides in left and right slides from different directions as you click the navigation arrows.
How to use it:
1. Add slides and navigation arrows to the split slider following the markup structure like this:
<div class="split-slider-wrapper"> <div class="navigation"> <i class="js-navigate js-left disabled icon-arrow-left-circle icons"></i> <i class="js-navigate js-right icon-arrow-right-circle icons"></i></div> <div class="split-slider-image"> <div class="split-slider active"><img class="slidephoto" src="1.png"/></div> <div class="split-slider"><img class="slidephoto" src="2.png"/></div> <div class="split-slider"><img class="slidephoto" src="3.png"/></div> <div class="split-slider"><img class="slidephoto" src="4.png"/></div> <div class="split-slider"><img class="slidephoto" src="5.png"/></div> ... </div> <div class="split-slider-content"> <div class="split-slider active blue"> <div class="split-slider-page">1/8</div> <div class="split-slider-content-inner"> <h1 class="slidename">Slide 1</h1> <div class="slidecontext">Text 1</div> <div class="slidecta">CTA 1</div> </div> </div> <div class="split-slider"> <div class="split-slider-page">2/8</div> <div class="split-slider-content-inner"> <h1 class="slidename">Slide 2</h1> <div class="slidecontext">Text 1</div> <div class="slidecta">CTA 2</div> </div> </div> <div class="split-slider orange"> <div class="split-slider-page">3/8</div> <div class="split-slider-content-inner"> <h1 class="slidename">Slide 3</h1> <div class="slidecontext">Text 3</div> <div class="slidecta">CTA 3</div> </div> </div> <div class="split-slider yellow"> <div class="split-slider-page">4/8</div> <div class="split-slider-content-inner"> <h1 class="slidename">Slide 4</h1> <div class="slidecontext">Text 4</div> <div class="slidecta">CTA 4</div> </div> </div> <div class="split-slider green"> <div class="split-slider-content-inner"> <h1 class="slidename">Slide 5</h1> <div class="slidecontext">Text 5</div> <div class="slidecta">CTA 5</div> </div> </div> </div> ... </div> </div>
2. The necessary CSS/CSS3 styles for the split slider.
.split-slider-wrapper { display: flex; flex-wrap: wrap; background: #fff; box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07); align-self: stretch; } .split-slider-wrapper .split-slider-image { flex: 4; overflow: hidden; position: relative; background: #fcfcfc; } .split-slider-wrapper .slidephoto { max-width: 150%; position: absolute; right: 0; bottom: 120%; transition: all 600ms cubic-bezier(1, 0, 0, 1); } .split-slider-wrapper .split-slider-content { background: #fff; flex: 5; padding: 7%; text-align: center; min-height: 400px; overflow: hidden; position: relative; } .split-slider-wrapper .navigation { position: absolute; right: -10px; top: 60px; font-size: 30px; text-align: center; color: #fff; } .split-slider-wrapper .navigation i { margin: 8px; display: block; opacity: 0.6; cursor: pointer; } .split-slider-wrapper .navigation i:hover { opacity: 1; } .split-slider-wrapper .navigation i.disabled { opacity: 0.2; pointer-events: none; } .split-slider-wrapper .split-slider-page { font: 400 28px "Playfair Display", cursive; position: absolute; top: 10px; right: 20px; color: #999; opacity: 0; transition: all 600ms cubic-bezier(1, 0, 0, 1); } .split-slider-wrapper .split-slider-content-inner { transition: all 600ms cubic-bezier(1, 0, 0, 1); top: 150%; position: absolute; left: 0; margin: 0 10%; right: 0; } .split-slider.active .split-slider-page { opacity: 1; } .split-slider.active .slidephoto { bottom: -5%; } .split-slider.active .split-slider-content-inner { top: 12%; } .slidename { font: 900 35px Raleway; text-transform: uppercase; margin: 20px 0 5px; letter-spacing: 2px; color: var(--color); position: relative; } .slidename:before { content: ""; position: absolute; } .slidecontext { font: 400 18px/1.3 "Raleway"; color: #999; margin: 40px 20px; } .slideserving { font: 400 16px Raleway; color: var(--color); border: 0.5px solid var(--color); border-width: 0.5px 0; margin: 20px auto; max-width: 300px; } .slideserving svg { width: 40px; } .slideserving svg path { fill: var(--color); } .slideserving p { display: inline-block; vertical-align: top; margin: 12px 6px 6px; } .slidecta { display: block; padding: 15px; border-radius: 40px; background: var(--color); max-width: 180px; font-size: 20px; color: #fff; position: relative; margin: auto; top: 0; transition: all 200ms cubic-bezier(0.77, 0, 0.175, 1); } .slidecta:hover { top: -5px; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); } @media (max-width: 750px) { .split-slider-wrapper .slidephoto { max-width: 180%; } }
3. Insert the latest version of jQuery library into the document.
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT" crossorigin="anonymous"> </script>
4. The main JavaScript (jQuery script) to archive the split animation when switching between slides.
$(".js-navigate").on("click", function() { $(".js-navigate").removeClass("disabled"); var current = $(".split-slider.active"); var findNext = $(current).next(".split-slider"); var findPrev = $(current).prev(".split-slider"); var button = $(this); $(current).removeClass("active"); setTimeout(function() { if ($(button).hasClass("js-right")) { $(findNext).addClass("active"); checkForDisable(); } else if ($(button).hasClass("js-left")) { $(findPrev).addClass("active"); checkForDisable(); } }, 300); }); function checkForDisable() { var current = $(".split-slider.active"); if ($(current).is(".split-slider:last")) { $(".js-right").addClass("disabled"); } else if ($(current).is(".split-slider:first")) { $(".js-left").addClass("disabled"); } }
This awesome jQuery plugin is developed by Olivia. For more Advanced Usages, please check the demo page or visit the official website.