webrepa,
начало скрола if(flag)temp = q , flag = false , timer = 100ms через 100ms принять решение if(q > temp) крутим до ближайшего следущего иначе до ближайшего предыдущего |
А можете вновь немного подробнее, пожалуйста.
|
|
Если не тяжело, подскажите по флагу, пожалуйста. Мне бы очень хотелось все понять и применить. Если не сложно укажите как это написать и где, а я потом буду анализировать и додумывать что, как и почему.
Спасибо. |
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>
|
Хоть стреляй не получается эту функцию впихнуть в мой код, что я постил ранее. Вообще уже в край запутался.
|
webrepa,
решайте вопрос по своему алгоритму, главное его придумать и проверить, на чужом не зацикливайтесь. |
Придумал не самое изящное решение наверное, но всю функцию обернул в if, где она выполняется только если flag == true. Перед функцией поставил flag в true, а перед завершением flag в false. Затем setTimeout('flag = true', 1000);
Получилось что надо вроде бы. Срабатывает 1 раз в секунду. Хотя наверное есть и поизящнее решения. Но Вам отдельное спасибо за помощь. |
webrepa,
хороший debounce так и позволяет либо запустить функцию только в самом начале прокрутки один раз или по окончании скролинга тоже 1 раз (как вам нужно, настраивается в опциях) |
Да, Вы правы. Все верно :)
|
| Часовой пояс GMT +3, время: 20:16. |