简体   繁体   English

我如何知道用户的滚动是向上还是向下?

[英]How can I know whether the scroll of the user is UP or DOWN?

I want to determine the scroll of the users.我想确定用户的滚动。 I'm using jQuery.. And jquery have .scroll event.. But the .scroll event can't determine whether the user is scrolling the page downwards or upwards.我正在使用 jQuery .. 并且 jquery 有 .scroll 事件.. 但是 .scroll 事件无法确定用户是向下还是向上滚动页面。

You can start with a variable like this:您可以从这样的变量开始:

var position = $(window).scrollTop(); // should start at 0

And then have something that monitors whether the scrollTop is going up or down:然后有一些东西可以监控 scrollTop 是向上还是向下:

$(window).scroll(function() {
  var scroll = $(window).scrollTop();
  if (scroll > position) {
    console.log("scrolling downwards");
  } else {
    console.log("scrolling upwards");
  }
  position = scroll;
});

 var position = $(window).scrollTop(); $(window).scroll(function() { var scroll = $(window).scrollTop(); if (scroll > position) { console.log("scrolling downwards"); } else { console.log("scrolling upwards"); } position = scroll; });
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <p style="font-size: 40px;"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent vitae erat et lacus facilisis hendrerit ac nec lectus. Aenean hendrerit maximus tempus. Phasellus feugiat odio vitae ligula eleifend condimentum. Vestibulum id faucibus magna, sit amet consequat nunc. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum pellentesque, magna ut ultricies lacinia, nisi dui condimentum ante, vitae euismod arcu eros vitae nulla. Donec finibus erat sed libero commodo tincidunt. Curabitur pulvinar, nisl vitae tempus commodo, felis nisi pretium arcu, sed gravida risus sapien eu ipsum. In metus magna, consequat eleifend sem a, condimentum imperdiet augue. Fusce blandit dui eu erat lacinia, vitae laoreet orci porttitor. Nulla tortor nibh, porttitor at augue quis, elementum hendrerit velit. Fusce at risus in massa pellentesque dapibus id ut velit. In tempor magna vitae diam posuere pharetra. Aliquam sed semper sem. Nam dapibus pretium tempus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Cras ex odio, auctor eget mauris eget, dignissim rutrum mauris. Nulla porttitor leo nec enim gravida scelerisque. Nam consectetur malesuada enim eu tincidunt. Morbi posuere imperdiet nisl. Aenean non tortor porttitor, aliquam lectus a, scelerisque risus. Donec eu felis non justo sollicitudin venenatis eget eu mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam fringilla mi ut purus ornare, et interdum est accumsan. Donec dapibus enim non sem dictum pretium. Pellentesque quis velit sem. Duis rutrum vulputate sem eget fringilla. Pellentesque vel enim nulla. Aliquam erat volutpat. Maecenas lacinia condimentum semper. Quisque gravida orci ut mauris rhoncus interdum. Pellentesque id augue vitae leo accumsan vehicula. Fusce sed justo id metus ornare ultrices. Vestibulum gravida lacus vitae finibus viverra. Maecenas dapibus quam et pulvinar tempus. Maecenas at molestie justo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus non elementum dui, a rutrum ligula. Ut ut odio feugiat, suscipit arcu eget, feugiat leo. Nunc elit erat, ultricies vel volutpat vitae, dignissim vel nunc. Sed pharetra lacus sem, quis dignissim metus ullamcorper a. Vivamus ac augue libero. Donec consectetur sem non ipsum faucibus cursus. Morbi facilisis efficitur urna sit amet vehicula. Proin nec finibus magna. Cras suscipit nec eros sit amet vestibulum. Integer aliquam a mauris non interdum. Fusce eu mattis enim. Vestibulum congue ullamcorper velit ut tempus. Curabitur et pretium massa, ac condimentum massa. </p>

Here is an example with plain javascript:这是一个简单的 javascript 示例:

 var previousPosition = window.pageYOffset || document.documentElement.scrollTop; window.onscroll = function() { var currentPosition = window.pageYOffset || document.documentElement.scrollTop; if (previousPosition > currentPosition) { console.log('scrolling up'); } else { console.log('scrolling down'); } previousPosition = currentPosition; };
 <h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda perferendis consequuntur sunt possimus rem iusto necessitatibus dignissimos odio nam vel quia vitae voluptates quibusdam quidem, maxime mollitia perspiciatis, ipsum veritatis!</h1><h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda perferendis consequuntur sunt possimus rem iusto necessitatibus dignissimos odio nam vel quia vitae voluptates quibusdam quidem, maxime mollitia perspiciatis, ipsum veritatis!</h1><h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda perferendis consequuntur sunt possimus rem iusto necessitatibus dignissimos odio nam vel quia vitae voluptates quibusdam quidem, maxime mollitia perspiciatis, ipsum veritatis!</h1><h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda perferendis consequuntur sunt possimus rem iusto necessitatibus dignissimos odio nam vel quia vitae voluptates quibusdam quidem, maxime mollitia perspiciatis, ipsum veritatis!</h1>

FASTEST WAY IN PURE JS纯 JS 中最快的方法

let position = window.pageYOffset; // get current page-Y-offset

window.addEventListener('scroll', () => { // Listen for scroll

let scroll = window.pageYOffset; // get page-Y-offset value with every scroll

//If the scroll is greater than position, user has scrolled down, else they scrolled up
scroll > position ? console.log('down') : console.log('up');

//Set the position equal to scroll
position = scroll;

});

Here is a simple example.这是一个简单的例子。

 //The message variable is specific to this example const message = document.querySelector('.message'); let position = window.pageYOffset; window.addEventListener('scroll', () => { let scroll = window.pageYOffset; scroll > position ? message.innerHTML = 'Scrolled Down' : message.innerHTML = 'Scrolled Up'; position = scroll; });
 .container { postion: relative; width: 100%; height: 200vh; background: linear-gradient(red,blue); } .container .message { position: fixed; top: 0; left: 0; width: 100%; height: 50px; color: white; font-size: 2em; display: flex; justify-content: center; align-items: center; padding: 1em 0; }
 <div class="container"> <div class="message">Scroll down and up</div> </div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何创建自定义事件以进行上下滚动? - How can I create a custom event for scroll up and down? Vue 3:我无法向下或向上滚动 - Vue 3: I can't scroll down or up 向下滚动时如何缩小动画标题,而向上滚动时如何放大动画标题? - How can I shrink a header animated when I scroll down and enlarge it when I scroll up? 我如何知道Cookie是否过期? - How can I know a cookie whether is expired? 如何使标题在向下滚动时消失/消失并在向上滚动时重新出现? - How can I make my header fade out/disappear on scroll down and reappear on scroll up? 我如何在向下滚动时创建隐藏并在向上滚动菜单上显示隐藏的jQuery或其他依赖项 - How can I create a hide on scroll down and show on scroll up menu whitout jquery or other dependencies 当用户向下滚动时,如何使第一个视图中的向下箭头消失? - When a user scroll down, how I can make the down arrow in the first view disappear? 如何确定页面上的元素是否在用户的当前滚动窗格内? - How can I determine whether an element on the page is within the user's current scroll pane? 如何向下滚动像向上滚动一样,在向下滚动中我没有页面高度 - How to scroll down like scroll up ,In scroll down I'm not getting page height 当我向下滚动时,元素将追加到父元素。 但是,当向上滚动时,如何恢复原始状态? - When i scroll down, element appends to parent element. But, when scroll up, how can I turn back original status?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM