@artmirarmi

Как узнать какие объекты попали в зону видимости пользователя?

Допустим есть много блоков. Как узнать что пользователь увидел этот блок при скролле родительского элемента (даже если он торчит только на 1px с низу страницы)?

https://jsfiddle.net/v3uhdbjr/25/
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ответы на вопрос 2
iDevArtem
@iDevArtem
var margin = 15;  // 15px отступ для наглядности

$('.container').on('resize scroll', function() {

  var $container = $(this);
  var container_height = $container.outerHeight();

  $('.block').each(function(i, block) {
    var $block = $(block);
    
    var top = $block.offset().top - $container.offset().top;
    var bottom = top + $block.outerHeight();

    var is_visible = (bottom > (0 + margin) && top < (container_height - margin));

    $block[is_visible ? 'addClass' : 'removeClass']('block-visible');
  });
}).trigger('scroll');

.block-visible { background-color: red; }

P.S.: может есть лучше решение =/
Ответ написан
Комментировать
@forspamonly2
Комментировать
Ваш ответ на вопрос

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

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