Responsive Fullscreen Slice Image Slider With jQuery And GSAP
File Size: | 3.25 KB |
---|---|
Views Total: | 4676 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

A pretty cool responsive fullscreen slider/carousel which enables the user to slide through images with slice and parallax effects, powered by jQuery, CSS3 and GSAP's TweenMax.js.
How to use it:
1. Add your images together with the SVG based navigation arrows into the slider carousel.
<div class="slice-slider"> <div class="navigation navigation--prev"> <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 50 50"><path fill="#ffffff" d="M30.55 39.69c.567-.475.645-1.314.17-1.882L20.044 25 30.72 12.19c.474-.566.396-1.408-.17-1.88-.564-.474-1.407-.397-1.88.17L17.28 24.145c-.208.248-.312.552-.312.855s.104.608.31.855L28.67 39.52c.474.566 1.316.642 1.882.17z"/></svg> </div> <div class="navigation navigation--next"> <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 50 50"><path fill="#ffffff" d="M19.45 10.31c-.567.475-.644 1.314-.17 1.88L29.956 25 19.28 37.81c-.473.566-.396 1.408.17 1.88s1.408.397 1.88-.17l11.39-13.664c.208-.248.312-.552.312-.855s-.104-.607-.31-.854L21.33 10.48c-.474-.566-1.316-.643-1.882-.17z"/></svg> </div> <div class="slider-container"> <div> <div class="slider-slice"> <div class="slider-slice-imageContainer image--0 image--active"> <img src="https://i.imgsafe.org/d24eba4717.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--1"> <img src="https://i.imgsafe.org/d24e54bee3.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--2"> <img src="https://i.imgsafe.org/d24ed4cc27.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--3"> <img src="https://i.imgsafe.org/d24f00e5ee.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--4"> <img src="https://i.imgsafe.org/d24d4804af.jpg" alt=""> </div> </div> <div class="slider-slice"> <div class="slider-slice-imageContainer image--0 image--active"> <img src="https://i.imgsafe.org/d24eba4717.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--1"> <img src="https://i.imgsafe.org/d24e54bee3.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--2"> <img src="https://i.imgsafe.org/d24ed4cc27.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--3"> <img src="https://i.imgsafe.org/d24f00e5ee.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--4"> <img src="https://i.imgsafe.org/d24d4804af.jpg" alt=""> </div> </div> <div class="slider-slice"> <div class="slider-slice-imageContainer image--0 image--active"> <img src="https://i.imgsafe.org/d24eba4717.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--1"> <img src="https://i.imgsafe.org/d24e54bee3.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--2"> <img src="https://i.imgsafe.org/d24ed4cc27.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--3"> <img src="https://i.imgsafe.org/d24f00e5ee.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--4"> <img src="https://i.imgsafe.org/d24d4804af.jpg" alt=""> </div> </div> <div class="slider-slice"> <div class="slider-slice-imageContainer image--0 image--active"> <img src="https://i.imgsafe.org/d24eba4717.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--1"> <img src="https://i.imgsafe.org/d24e54bee3.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--2"> <img src="https://i.imgsafe.org/d24ed4cc27.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--3"> <img src="https://i.imgsafe.org/d24f00e5ee.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--4"> <img src="https://i.imgsafe.org/d24d4804af.jpg" alt=""> </div> </div> <div class="slider-slice"> <div class="slider-slice-imageContainer image--0 image--active"> <img src="https://i.imgsafe.org/d24eba4717.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--1"> <img src="https://i.imgsafe.org/d24e54bee3.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--2"> <img src="https://i.imgsafe.org/d24ed4cc27.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--3"> <img src="https://i.imgsafe.org/d24f00e5ee.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--4"> <img src="https://i.imgsafe.org/d24d4804af.jpg" alt=""> </div> </div> <div class="slider-slice"> <div class="slider-slice-imageContainer image--0 image--active"> <img src="https://i.imgsafe.org/d24eba4717.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--1"> <img src="https://i.imgsafe.org/d24e54bee3.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--2"> <img src="https://i.imgsafe.org/d24ed4cc27.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--3"> <img src="https://i.imgsafe.org/d24f00e5ee.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--4"> <img src="https://i.imgsafe.org/d24d4804af.jpg" alt=""> </div> </div> <div class="slider-slice"> <div class="slider-slice-imageContainer image--0 image--active"> <img src="https://i.imgsafe.org/d24eba4717.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--1"> <img src="https://i.imgsafe.org/d24e54bee3.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--2"> <img src="https://i.imgsafe.org/d24ed4cc27.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--3"> <img src="https://i.imgsafe.org/d24f00e5ee.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--4"> <img src="https://i.imgsafe.org/d24d4804af.jpg" alt=""> </div> </div> <div class="slider-slice"> <div class="slider-slice-imageContainer image--0 image--active"> <img src="https://i.imgsafe.org/d24eba4717.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--1"> <img src="https://i.imgsafe.org/d24e54bee3.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--2"> <img src="https://i.imgsafe.org/d24ed4cc27.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--3"> <img src="https://i.imgsafe.org/d24f00e5ee.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--4"> <img src="https://i.imgsafe.org/d24d4804af.jpg" alt=""> </div> </div> <div class="slider-slice"> <div class="slider-slice-imageContainer image--0 image--active"> <img src="https://i.imgsafe.org/d24eba4717.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--1"> <img src="https://i.imgsafe.org/d24e54bee3.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--2"> <img src="https://i.imgsafe.org/d24ed4cc27.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--3"> <img src="https://i.imgsafe.org/d24f00e5ee.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--4"> <img src="https://i.imgsafe.org/d24d4804af.jpg" alt=""> </div> </div> <div class="slider-slice"> <div class="slider-slice-imageContainer image--0 image--active"> <img src="https://i.imgsafe.org/d24eba4717.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--1"> <img src="https://i.imgsafe.org/d24e54bee3.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--2"> <img src="https://i.imgsafe.org/d24ed4cc27.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--3"> <img src="https://i.imgsafe.org/d24f00e5ee.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--4"> <img src="https://i.imgsafe.org/d24d4804af.jpg" alt=""> </div> </div> <div class="slider-slice"> <div class="slider-slice-imageContainer image--0 image--active"> <img src="https://i.imgsafe.org/d24eba4717.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--1"> <img src="https://i.imgsafe.org/d24e54bee3.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--2"> <img src="https://i.imgsafe.org/d24ed4cc27.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--3"> <img src="https://i.imgsafe.org/d24f00e5ee.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--4"> <img src="https://i.imgsafe.org/d24d4804af.jpg" alt=""> </div> </div> <div class="slider-slice"> <div class="slider-slice-imageContainer image--0 image--active"> <img src="https://i.imgsafe.org/d24eba4717.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--1"> <img src="https://i.imgsafe.org/d24e54bee3.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--2"> <img src="https://i.imgsafe.org/d24ed4cc27.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--3"> <img src="https://i.imgsafe.org/d24f00e5ee.jpg" alt=""> </div> <div class="slider-slice-imageContainer image--4"> <img src="https://i.imgsafe.org/d24d4804af.jpg" alt=""> </div> </div> </div> <div class="slider-overlay"></div> </div> </div>
2. The required CSS/CSS3 styles for the slider carousel.
.slice-slider { position: fixed; width: 100%; height: 100%; top: 0; z-index: 100; } .slider-container { position: relative; overflow: hidden; } .slider-container:after { content: ""; display: table; clear: both; } .slider-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: #0a0a0a; opacity: 0.2; } .slider-slice { position: relative; width: 25%; height: 33.33vh; float: left; overflow: hidden; -ms-box-sizing: border-box; box-sizing: border-box; } .slider-slice img { position: relative; } .slider-slice-imageContainer { height: 100%; width: 100%; overflow: hidden; position: absolute; } .slider-slice:nth-of-type(1) img { top: 0; left: 0; } .slider-slice:nth-of-type(2) img { top: 0; left: -25vw; } .slider-slice:nth-of-type(3) img { top: 0; left: -50vw; } .slider-slice:nth-of-type(4) img { top: 0; left: -75vw; } .slider-slice:nth-of-type(5) img { top: -33.33vh; left: 0; } .slider-slice:nth-of-type(6) img { top: -33.33vh; left: -25vw; } .slider-slice:nth-of-type(7) img { top: -33.33vh; left: -50vw; } .slider-slice:nth-of-type(8) img { top: -33.33vh; left: -75vw; } .slider-slice:nth-of-type(9) img { top: -66.66vh; left: 0; } .slider-slice:nth-of-type(10) img { top: -66.66vh; left: -25vw; } .slider-slice:nth-of-type(11) img { top: -66.66vh; left: -50vw; } .slider-slice:nth-of-type(12) img { top: -66.66vh; left: -75vw; } .navigation { position: fixed; width: 50px; height: 50px; border-radius: 50%; z-index: 100; overflow: hidden; -webkit-transform: translateZ(0); transform: translateZ(0); border: solid 2px white; opacity: 0.5; -webkit-transition: all 0.2s; transition: all 0.2s; background: rgba(120, 160, 170, 0.4); cursor: pointer; } .navigation svg { z-index: 101; position: absolute; -webkit-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; opacity: .3; } .navigation:hover { opacity: 1; } .navigation:hover svg { opacity: 1; } .navigation--next { right: 20px; top: 50%; } .navigation--next:hover svg { -webkit-transform: translateX(4%); transform: translateX(4%); } .navigation--prev { left: 20px; top: 50%; } .navigation--prev:hover svg { -webkit-transform: translateX(-4%); transform: translateX(-4%); }
3. Load the necessary JQuery library and GSAP's TweenMax.js in the document.
<script src="/path/to/jquery-3.1.0.min.js"></script> <script src="/path/to/TweenMax.min.js"></script>
4. The core JavaScript.
(function($){ var image = $(".slider-slice img"), imageContainer = $(".slider-slice-imageContainer"), sliderSlice = $(".slider-slice"), imageActive = $(".image--active"), sliderOverlay = $(".slider-overlay"), CTA = $(".navigation"), vw, vh, delay = 0.06, delays = []; TweenMax.set(imageContainer, {xPercent: "100"}); TweenMax.set(imageActive, {xPercent: "0"}); $("body").addClass("u-blockScroll"); for (var i = 0; i < 4; i++) { delays.push(i*delay); }; /******************************** FIT THE WINDOWS WITH THE IMAGES ********************************/ function positionImages(){ vw = $(window).width(); vh = $(window).height(); var imageW = image.width(); var imageH = image.height(); ratioImg = imageW / imageH; ratioW = vw / vh; if(ratioImg > ratioW){ image.css({"width": "auto", "height" : vh}); }else{ image.css({"width": vw, "height" : "auto"}); } } positionImages(); $(window).on("resize", positionImages); /******************************** OPENING ********************************/ var tlOpening = new TimelineMax({delay: 2}); var delayOpening = 0.05; tlOpening .fromTo(($(".slider-slice-imageContainer.image--active").eq(0)), 1, {xPercent: -100}, {xPercent:0, ease: Power2.easeInOut}, 1 * delayOpening) .fromTo(($(".slider-slice-imageContainer.image--active").eq(1)), 1, {xPercent: -100}, {xPercent:0, ease: Power2.easeInOut}, 2 * delayOpening) .fromTo(($(".slider-slice-imageContainer.image--active").eq(2)), 1, {xPercent: -100}, {xPercent:0, ease: Power2.easeInOut}, 3 * delayOpening) .fromTo(($(".slider-slice-imageContainer.image--active").eq(3)), 1, {xPercent: -100}, {xPercent:0, ease: Power2.easeInOut}, 4 * delayOpening) .fromTo(($(".slider-slice-imageContainer.image--active").eq(4)), 1, {xPercent: -100}, {xPercent:0, ease: Power2.easeInOut}, 2 * delayOpening) .fromTo(($(".slider-slice-imageContainer.image--active").eq(5)), 1, {xPercent: -100}, {xPercent:0, ease: Power2.easeInOut}, 3 * delayOpening) .fromTo(($(".slider-slice-imageContainer.image--active").eq(6)), 1, {xPercent: -100}, {xPercent:0, ease: Power2.easeInOut}, 5 * delayOpening) .fromTo(($(".slider-slice-imageContainer.image--active").eq(7)), 1, {xPercent: -100}, {xPercent:0, ease: Power2.easeInOut}, 5 * delayOpening) .fromTo(($(".slider-slice-imageContainer.image--active").eq(8)), 1, {xPercent: -100}, {xPercent:0, ease: Power2.easeInOut}, 3 * delayOpening) .fromTo(($(".slider-slice-imageContainer.image--active").eq(9)), 1, {xPercent: -100}, {xPercent:0, ease: Power2.easeInOut}, 4 * delayOpening) .fromTo(($(".slider-slice-imageContainer.image--active").eq(10)), 1, {xPercent: -100}, {xPercent:0, ease: Power2.easeInOut}, 5 * delayOpening) .fromTo(($(".slider-slice-imageContainer.image--active").eq(11)), 1, {xPercent: -100}, {xPercent:0, ease: Power2.easeInOut}, 6 * delayOpening) .fromTo(CTA, 0.6, {autoAlpha:0}, {autoAlpha:1}); /******************************** SLIDE BACKGROUND ********************************/ var durationSlide = 0.8; var durationText = 0.8; var isMoving = false; function slideBackground(fromRight){ isMoving = true; var tlSlideBackground = new TimelineMax({onComplete: function(){ isMoving = false}}); imageActive = $(".image--active"); if(fromRight === true){ var from = 105; var to = -100; }else{ var from = -105; var to = 100; } var k = 0; imageActive.each(function(i,el){ var parent = $(el).closest(".slider-slice"); if(fromRight === true){ var nextSlice = $(el).next(); }else{ var nextSlice = $(el).prev(); } if (nextSlice.is(':last-child') || nextSlice.is(':first-child')) { parent.find(".slider-slice-imageContainer").eq(0).appendTo(parent); } if(nextSlice.index() == -1){ parent.find(".slider-slice-imageContainer").eq(0).appendTo(parent); var nextSlice = $(el).prev(); } tlSlideBackground .to(el, (durationSlide * 1.1), {xPercent: to, ease: Power2.easeInOut}, delays[k]) .fromTo(nextSlice, durationSlide, {xPercent: from}, {xPercent:0, ease: Power2.easeInOut}, delays[k]) $(el).removeClass("image--active"); nextSlice.addClass("image--active"); k++; if(k==4){ k=0; } }); } /******************************** CTA ACTIONS ********************************/ $(".navigation--next").click(function(){ var fromRight = true; if(!(isMoving)){ slideBackground(fromRight); } }); $(".navigation--prev").click(function(){ var fromRight = false; if(!(isMoving)){ slideBackground(fromRight); } }); })(jQuery);
This awesome jQuery plugin is developed by dghez. For more Advanced Usages, please check the demo page or visit the official website.