可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I'm trying to think of a way to measure the velocity of a scroll event, that would produce some sort of a number which will represent the speed (distance from scroll point A to point B relative to the time it took).
I would welcome any suggestions in the form of pseudo code... I was trying to find information on this problem, online but could not find anything. very weird since it's 2014, how could it be that there is nothing on google for this...weird!
回答1:
var checkScrollSpeed = (function(settings){ settings = settings || {}; var lastPos, newPos, timer, delta, delay = settings.delay || 50; // in "ms" (higher means lower fidelity ) function clear() { lastPos = null; delta = 0; } clear(); return function(){ newPos = window.scrollY; if ( lastPos != null ){ // && newPos
Demo page: http://codepen.io/vsync/pen/taAGd/
Simplified demo: http://jsbin.com/mapafadako/edit?js,console,output
For real fun, give a real website these rules, then copy the JS and run it
回答2:
回答3:
Here is a script I just custom made for your issue. JS Bin
You can view the speed of scroll in the console log. It gives negative values for scrolling up and positive for scrolling down. The actual placement of the scroll bar is constantly updated in the scroll window for more information to glean. This should get you going in the right direction.