Как остановить скролл при достижении блока?

Как остановить скролл при достижении блока и затем снова установить скролл?
в чем копать об этом?
буду доволен если сбросите примерами
  • Вопрос задан
  • 753 просмотра
Пригласить эксперта
Ответы на вопрос 2
webirus
@webirus
Тыжверстальщик! Наверстай мне упущенное...
Не дай бог мне на такой сайт попасть.
Ответ написан
Комментировать
doniys_a
@doniys_a
Backend-разработчик (Php, node.js, python, ruby)
Для начала необходимо удостовериться, что в текущий момент времени элемент находится в видимой области экрана

как пример, вот такая ф-я

function isScrolledIntoView(el) {
    var elemTop = el.getBoundingClientRect().top,
        elemBottom = el.getBoundingClientRect().bottom,
        isVisible = (elemTop >= 0) && ((elemBottom + 240) <= window.innerHeight);
    return isVisible;
}


В этом примере я наблюдал, доскроллил ли пользователь до нужного мне элемента, и, если доскроллил, запускал анимацию.

var visible = false;
$(window).on('scroll', function () {
        var $box = $('.boxed-container');
        if ($box.size()) {
            var vis = isScrolledIntoView($box[0]),
                duration = 1000;
            if (vis && !visible) {
                $box.find('.item2').velocity({left: 0}, {
                    duration: duration,
                    complete: function () {
                        $box.find('.item1').velocity({left: 0}, duration);
                    }
                });
                $box.find('.item4').velocity({left: 0}, {
                    duration: duration,
                    complete: function () {
                        $box.find('.item5').velocity({left: 0}, duration);
                    }
                });
            }
            visible = vis;
        }
    });


Может это вас натолкнет на решение.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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