Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 11.02.2016, 18:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

webrepa,
начало скрола if(flag)temp = q , flag = false , timer = 100ms
через 100ms принять решение if(q > temp) крутим до ближайшего следущего иначе до ближайшего предыдущего
Ответить с цитированием
  #12 (permalink)  
Старый 11.02.2016, 18:18
Интересующийся
Отправить личное сообщение для webrepa Посмотреть профиль Найти все сообщения от webrepa
 
Регистрация: 11.02.2016
Сообщений: 11

А можете вновь немного подробнее, пожалуйста.
Ответить с цитированием
  #13 (permalink)  
Старый 11.02.2016, 18:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

webrepa,
готовое решение от devote
Скроллинг событие мыши
Ответить с цитированием
  #14 (permalink)  
Старый 12.02.2016, 11:29
Интересующийся
Отправить личное сообщение для webrepa Посмотреть профиль Найти все сообщения от webrepa
 
Регистрация: 11.02.2016
Сообщений: 11

Если не тяжело, подскажите по флагу, пожалуйста. Мне бы очень хотелось все понять и применить. Если не сложно укажите как это написать и где, а я потом буду анализировать и додумывать что, как и почему.
Спасибо.
Ответить с цитированием
  #15 (permalink)  
Старый 12.02.2016, 12:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

webrepa, примерно так, только вместо window.pageYOffset будет сумма delta в q
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    div, body, html{
      height: 100%;
    }
    p{
       position: fixed;
    }

  </style>

  <script>



 window.addEventListener('DOMContentLoaded', function() {
   var temp = 0 , flag = true , timer;
   window.addEventListener('scroll', function () {
      if(flag) {temp = window.pageYOffset;flag = false; document.querySelector('p').innerHTML = 'ждём окончания скрола'}
      window.clearTimeout(timer);
      window.setTimeout(fn,1000)
   });
   function fn()
   {  flag = true;
      document.querySelector('p').innerHTML = (window.pageYOffset > temp ? "крутим вниз" : "крутим вверх")
   }

     });
  </script>
</head>

<body>
<p></p>

<div id="dizzy">Dizzy
  <!-- panel content -->
</div>
<div id="ninja">Ninja
  <!-- panel content -->
</div>
<div id="missy">Missy
  <!-- panel content -->
</div>
</body>

</html>
Ответить с цитированием
  #16 (permalink)  
Старый 12.02.2016, 13:05
Интересующийся
Отправить личное сообщение для webrepa Посмотреть профиль Найти все сообщения от webrepa
 
Регистрация: 11.02.2016
Сообщений: 11

Хоть стреляй не получается эту функцию впихнуть в мой код, что я постил ранее. Вообще уже в край запутался.
Ответить с цитированием
  #17 (permalink)  
Старый 12.02.2016, 14:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

webrepa,
решайте вопрос по своему алгоритму, главное его придумать и проверить, на чужом не зацикливайтесь.
Ответить с цитированием
  #18 (permalink)  
Старый 12.02.2016, 14:14
Интересующийся
Отправить личное сообщение для webrepa Посмотреть профиль Найти все сообщения от webrepa
 
Регистрация: 11.02.2016
Сообщений: 11

Придумал не самое изящное решение наверное, но всю функцию обернул в if, где она выполняется только если flag == true. Перед функцией поставил flag в true, а перед завершением flag в false. Затем setTimeout('flag = true', 1000);
Получилось что надо вроде бы. Срабатывает 1 раз в секунду. Хотя наверное есть и поизящнее решения.
Но Вам отдельное спасибо за помощь.
Ответить с цитированием
  #19 (permalink)  
Старый 12.02.2016, 14:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

webrepa,
хороший debounce так и позволяет либо запустить функцию только в самом начале прокрутки один раз или по окончании скролинга тоже 1 раз (как вам нужно, настраивается в опциях)
Ответить с цитированием
  #20 (permalink)  
Старый 12.02.2016, 14:45
Интересующийся
Отправить личное сообщение для webrepa Посмотреть профиль Найти все сообщения от webrepa
 
Регистрация: 11.02.2016
Сообщений: 11

Да, Вы правы. Все верно
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить сколько раз страница прокручена до конца. dolte Events/DOM/Window 1 19.09.2013 22:21