Появление блока в области видимости?

403
14 марта 2017, 15:04

Так как не владею информацией , хотелось бы получить информацию от и до , как действовать на DIV при прокрутки в центр ?

Конкретных примеров нету , точнее то что я делал оказалось ерундой !

Не интересует готовое решение но требуется грамотное разъяснение с примером здесь Лучший ответ будет вознаграждён через 2 дня 200 балами за труды , конкурс будет объявлен

Уважаемые специалисты поясните как это работает ?

var $win = $(window); 
var $marker = $('#marker'); 
$win.scroll(function() { 
  if ($win.scrollTop() + $win.height() >= $marker.offset().top) { 
    $win.unbind('scroll'); // load there  
  } 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Это взято с тостер и не работало и таких приеров из сети 11 пробовал

Answer 1

В вашем примере нет html разметки, поэтому работать он не может, а работает это так:

Складываем значение прокрутки страницы $win.scrollTop() и высоту окна $win.height(), этим мы получаем положение страницы относительно нижней границы окна, так как нам нужно узнать пересек ли элемент нижнюю границу окна, чтобы узнать стал ли он виден, потом проверяем, если это значение больше, чем отступ нужного элемента от верха страницы $marker.offset().top, то значит элемент уже появился внизу окна, соответственно виден.

var $win = $(window); 
var $marker = $('#marker'); 
 
//отслеживаем событие прокрутки страницы 
$win.scroll(function() { 
  //Складываем значение прокрутки страницы и высоту окна, этим мы получаем положение страницы относительно нижней границы окна, потом проверяем, если это значение больше, чем отступ нужного элемента от верха страницы, то значит элемент уже появился внизу окна, соответственно виден 
  if($win.scrollTop() + $win.height() >= $marker.offset().top) { 
    $('#message').html('виден'); //выполняем действия если элемент виден 
  }else{ 
    $('#message').html('не виден'); //выполняем действия если не элемент виден 
  } 
});
#marker{ 
  margin-top: 500px; 
  width: 200px; 
  height: 100px; 
  background: red; 
} 
 
#message{ 
  position: fixed; 
  left: 20px; 
  top: 20px; 
  color: red; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div id="message"></div> 
<div id="marker"></div>

READ ALSO
Принцип работы роутера в CMS

Принцип работы роутера в CMS

Имеем такой роутер

195
Навигация между экранами React Native (Android)

Навигация между экранами React Native (Android)

Как сделать навигацию между двумя экранами в react native?

250
Передача value из input в input [требует правки]

Передача value из input в input [требует правки]

Имеется каталог товаровУ каждого товара есть кнопка заказать, по нажатию на которую появляется форма обратной связи

253