Skip to content

Instantly share code, notes, and snippets.

@CodeMyUI
Created August 14, 2017 09:29
Show Gist options
  • Select an option

  • Save CodeMyUI/5255af54a3f909d3d1d7331d685b2ffe to your computer and use it in GitHub Desktop.

Select an option

Save CodeMyUI/5255af54a3f909d3d1d7331d685b2ffe to your computer and use it in GitHub Desktop.

Revisions

  1. CodeMyUI created this gist Aug 14, 2017.
    32 changes: 32 additions & 0 deletions index.html
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,32 @@
    <!--
    Follow me on
    Dribbble: https://dribbble.com/supahfunk
    Twitter: https://twitter.com/supahfunk
    Codepen: https://codepen.io/supah/
    -->
    <div class="split-slideshow">
    <div class="slideshow">
    <div class="slider">
    <div class="item">
    <img src="https://raw.githubusercontent.com/supahfunk/supah-codepen/master/canyon-2.jpg" />
    </div>
    <div class="item">
    <img src="https://raw.githubusercontent.com/supahfunk/supah-codepen/master/canyon-3.jpg" />
    </div>
    <div class="item">
    <img src="https://raw.githubusercontent.com/supahfunk/supah-codepen/master/canyon-4.jpg" />
    </div>
    <div class="item">
    <img src="https://raw.githubusercontent.com/supahfunk/supah-codepen/master/canyon-1.jpg" />
    </div>
    </div>
    </div>
    <div class="slideshow-text">
    <div class="item">Canyon</div>
    <div class="item">Desert</div>
    <div class="item">Erosion</div>
    <div class="item">Shape</div>
    </div>
    </div>
    77 changes: 77 additions & 0 deletions script.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,77 @@
    var $slider = $('.slideshow .slider'),
    maxItems = $('.item', $slider).length,
    dragging = false,
    tracking,
    rightTracking;

    $sliderRight = $('.slideshow').clone().addClass('slideshow-right').appendTo($('.split-slideshow'));

    rightItems = $('.item', $sliderRight).toArray();
    reverseItems = rightItems.reverse();
    $('.slider', $sliderRight).html('');
    for (i = 0; i < maxItems; i++) {
    $(reverseItems[i]).appendTo($('.slider', $sliderRight));
    }

    $slider.addClass('slideshow-left');
    $('.slideshow-left').slick({
    vertical: true,
    verticalSwiping: true,
    arrows: false,
    infinite: true,
    dots: true,
    speed: 1000,
    cssEase: 'cubic-bezier(0.7, 0, 0.3, 1)'
    }).on('beforeChange', function(event, slick, currentSlide, nextSlide) {

    if (currentSlide > nextSlide && nextSlide == 0 && currentSlide == maxItems - 1) {
    $('.slideshow-right .slider').slick('slickGoTo', -1);
    $('.slideshow-text').slick('slickGoTo', maxItems);
    } else if (currentSlide < nextSlide && currentSlide == 0 && nextSlide == maxItems - 1) {
    $('.slideshow-right .slider').slick('slickGoTo', maxItems);
    $('.slideshow-text').slick('slickGoTo', -1);
    } else {
    $('.slideshow-right .slider').slick('slickGoTo', maxItems - 1 - nextSlide);
    $('.slideshow-text').slick('slickGoTo', nextSlide);
    }
    }).on("mousewheel", function(event) {
    event.preventDefault();
    if (event.deltaX > 0 || event.deltaY < 0) {
    $(this).slick('slickNext');
    } else if (event.deltaX < 0 || event.deltaY > 0) {
    $(this).slick('slickPrev');
    };
    }).on('mousedown touchstart', function(){
    dragging = true;
    tracking = $('.slick-track', $slider).css('transform');
    tracking = parseInt(tracking.split(',')[5]);
    rightTracking = $('.slideshow-right .slick-track').css('transform');
    rightTracking = parseInt(rightTracking.split(',')[5]);
    }).on('mousemove touchmove', function(){
    if (dragging) {
    newTracking = $('.slideshow-left .slick-track').css('transform');
    newTracking = parseInt(newTracking.split(',')[5]);
    diffTracking = newTracking - tracking;
    $('.slideshow-right .slick-track').css({'transform': 'matrix(1, 0, 0, 1, 0, ' + (rightTracking - diffTracking) + ')'});
    }
    }).on('mouseleave touchend mouseup', function(){
    dragging = false;
    });

    $('.slideshow-right .slider').slick({
    swipe: false,
    vertical: true,
    arrows: false,
    infinite: true,
    speed: 950,
    cssEase: 'cubic-bezier(0.7, 0, 0.3, 1)',
    initialSlide: maxItems - 1
    });
    $('.slideshow-text').slick({
    swipe: false,
    vertical: true,
    arrows: false,
    infinite: true,
    speed: 900,
    cssEase: 'cubic-bezier(0.7, 0, 0.3, 1)'
    });
    3 changes: 3 additions & 0 deletions scripts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.12/jquery.mousewheel.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.js"></script>
    7 changes: 7 additions & 0 deletions split-slick-slideshow.markdown
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    Split Slick Slideshow
    ---------------------
    Vertical slideshow in split screen

    A [Pen](https://codepen.io/supah/pen/zZaPeE) by [Fabio Ottaviani](https://codepen.io/supah) on [CodePen](https://codepen.io).

    [License](https://codepen.io/supah/pen/zZaPeE/license).
    135 changes: 135 additions & 0 deletions style.scss
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,135 @@
    body,
    html {
    height: 100%;
    background: #110101;
    font-family: 'Roboto', sans-serif;
    overflow: hidden;
    }

    .slideshow {
    position: absolute;
    z-index: 1;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    overflow: hidden;

    .slider {
    width: 100vw;
    height: 100vw;
    z-index: 2;

    * {
    outline: none;
    }

    .item {
    height: 100vh;
    width: 100vw;
    position: relative;
    overflow: hidden;
    border: none;

    .text {
    display: none;
    }

    img {
    min-width: 101%;
    min-height: 101%;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    }
    }
    }

    .slick-dots {
    position: fixed;
    z-index: 100;
    width: 40px;
    height: auto;
    bottom: auto;
    top: 50%;
    right: 0;
    transform: translateY(-50%);
    left: auto;
    color: #fff;
    display: block;

    li {
    display: block;
    width: 100%;
    height: auto;

    & button {
    position: relative;
    width: 20px;
    height: 15px;
    text-align: center;

    &:before {
    content: '';
    background: #fff;
    color: #fff;
    height: 2px;
    width: 20px;
    border-radius: 0;
    position: absolute;
    top: 50%;
    right: 0;
    left: auto;
    transform: translateY(-50%);
    transition: all .3s ease-in-out;
    opacity: 0.6;
    }
    }

    &.slick-active {
    button {
    &:before {
    width: 40px;
    opacity: 1;
    }
    }
    }
    }
    }

    &.slideshow-right {
    left: 0;
    z-index: 1;
    width: 50vw;
    pointer-events: none;

    .slider {
    left: 0;
    position: absolute;
    }
    }
    }

    .slideshow-text {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 100;
    font-size: 80px;
    width: 100vw;
    text-align: center;
    color: #fff;
    font-family: 'Roboto Condensed', sans-serif;
    font-weight: 100;
    pointer-events: none;
    text-transform: uppercase;
    letter-spacing: 20px;
    line-height: 0.8;

    @media (max-width: 767px) {
    font-size: 40px;
    }

    }
    3 changes: 3 additions & 0 deletions styles
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.css" rel="stylesheet" />
    <link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick-theme.min.css" rel="stylesheet" />
    <link href="https://fonts.googleapis.com/css?family=Roboto+Condensed:100" rel="stylesheet" />