【发布时间】:2012-02-25 04:02:44
【问题描述】:
简单,我只想拥有它,这样当用户拖动项目并到达视口的最底部或顶部时(10px 左右),页面 (大约 3000 像素长) 轻轻向下或向上滚动,直到他们将光标 (因此被拖动的项目)移出该区域。
一个项目是一个 li 标签,它使用 jquery 使列表项可拖动。具体来说:
- ../jquery-ui-1.8.14.custom.min.js
- http://code.jquery.com/jquery-1.6.2.min.js
我目前使用 window.scrollBy(x=0,y=3) 滚动页面并具有以下变量:
- e.pageY ... 提供页面上光标的绝对 Y 坐标(与屏幕无关)
- $.scrollTop() ... 提供从页面顶部的偏移量(当滚动条一直向上时,它是 0)
- $.height()... 提供用户浏览器/视口中可视区域的高度
- body.offsetHeight ...整个页面的高度
我怎样才能实现这一点,哪个事件最能适应这一点(目前它在鼠标悬停中)? 我的想法:
- 使用 if/else 检查它是在顶部还是底部,如果 e.pageY 显示它在顶部,则向上滚动,如果 e.page& 在底部则向下滚动,然后调用 $(' li').mouseover() 事件迭代...
- 使用 do while 循环...实际上效果不错,但很难停止滚动到远处。但我不确定如何控制迭代......
我最近的尝试:
('li').mouseover(function(e) {
totalHeight = document.body.offsetHeight;
cursor.y = e.pageY;
var papaWindow = window;
var $pxFromTop = $(papaWindow).scrollTop();
var $userScreenHeight = $(papaWindow).height();
var iterate = 0;
do {
papaWindow.scrollBy(0, 2);
iterate++;
console.log(cursor.y, $pxFromTop, $userScreenHeight);
}
while (iterate < 20);
});
【问题讨论】:
-
仅供参考,我只是担心新的浏览器,主要是 FF 和 Chrome……IE 7 或更低版本在我的“世界”中不存在
-
嗨,你现在有解决这个问题的有效方法吗?你能贴出来吗?我在这里发布了类似的问题:stackoverflow.com/questions/11222047/…
标签: javascript jquery scroll draggable viewport