@Mr_NoMore

Слайдер по скроллу?

Здравствуйте. Мне необходимо реализовать слайдер по скроллу, который работает таким образом:
Пользователь зашел на страницу и скролит вниз, когда он доходит до слайдера и продолжает скролить, то пролистывается слайдер пока не достигнет последнего айтема и после этого идет скрол самой страницы. Так же если он начинает скролить страницу с низу в верх, то так же
доходя до слайдера должен проскролить его до первого элемента и после этого скролить вверх страницу.

Сделал нечто похожее, но работает плоховато, может вы подкинете идею или примеры похожее на то, что я писал выше.
Вот собственно, что у меня вышло:
<div class="slider" id="slider">
                            <div class="slick-block">
                                <div class="slick-image">
                                    <img class="image-item" src="/build/images/cool_carousel_1.jpg" alt="" >
                                </div>
                            </div>
                            <div class="slick-block">
                                <div class="slick-image">
                                    <img class="image-item" src="/build/images/cool_carousel_2.jpg" alt="" >
                                </div>
                            </div>
                            <div class="slick-block">
                                <div class="slick-image">
                                    <img class="image-item" src="/build/images/cool_carousel_3.jpg" alt="" >
                                </div>
                            </div>
                            <div class="slick-block">
                                <div class="slick-image">
                                    <img class="image-item" src="/build/images/cool_carousel_4.jpg" alt="" >
                                </div>
                            </div>
                        </div>


var $slider = $("#slider");
        $slider.on('init', function () {
            mouseWheel($slider);
        }).
        slick({
            dots: true,
            vertical: true,
            infinite: false });

        function mouseWheel($slider) {
            $('.slick-slider').on('wheel', { $slider: $slider }, mouseWheelHandler);
        }
        function mouseWheelHandler(event) {
            event.preventDefault();
            var $slider = event.data.$slider;
            var delta = event.originalEvent.deltaY;
            if (delta > 0) {
                $slider.slick('slickNext');

            } else
            {
                $slider.slick('slickPrev');
            }
        }



        $slider.on('afterChange', function(event, slick, currentSlide) {
            if (slick.$slides.length-1 == currentSlide) {
                $('.slick-slider').off('wheel');
            }
            if (currentSlide == 0) {
                $('.slick-slider').off('wheel');
            }
        });

        $(window).on('scroll',function(event){
               if ( $('.slick-slider:hover').length > 0 ){
                    mouseWheel($slider);
            }
        });
  • Вопрос задан
  • 2718 просмотров
Решения вопроса 1
dicem
@dicem
Вот вам отличная и повсеместно использующаяся библиотека для таких выкрутасов scrollmagic.io

А если самому, то тут ясное дело, придется отслеживать скролы и достижение скрола до определенных DOM элементов и манипуляция поведением этого самого скрола. Все это можно сделать с помощью jQuery.
Пользная ссылка раз

Ну и вот на это стоит обратить внимание конечно Как отслеживать прокрутку вверх и вниз по отдельности? тут неплохую библиотеку по распознаванию направления скролла рекомендуют
https://github.com/Promo/wheel-indicator
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы