请教控制滚动 div 的同时不滚动页面, 当 div 滚动到底部时同样不滚动页面!

2014-10-23 23:49:35 +08:00
 revir
jsbin见: http://jsbin.com/racowa/1/
左边一栏可以滚动, 但是滚动到底后会导致整个页面都滚动。
我希望达到的效果是像 feedly 一样, http://feedly.com/#my , 左边栏滚动到底时不能滚动整个页面, 只有当鼠标移出左边栏, 页面才能滚动。
该怎样办到呢? 如果能借助 js 做到也行!
非常感谢!
12533 次点击
所在节点    CSS
8 条回复
chairuosen
2014-10-24 00:07:47 +08:00
让右侧内容也是内部滚动
abelyao
2014-10-24 00:10:43 +08:00
大概思路有两个:
思路一:当鼠标处于某 div 之内触发 scroll 事件的时候,判断是否已经滚动到底部,如果已经到底部了,就停止停止事件,可能还需要对事件的冒泡进行处理,防止继续触发 window 的 scroll 事件;
思路二:当触发 window 的 scroll 事件时,判断鼠标的位置是否在 div 之内,是的话则不停止 window 的 scroll 事件;
随便想到的,仅供参考。
如果到明天仍然没解决,我再写一个 demo 出来试试,现在要睡觉了 :)
jsonline
2014-10-24 00:32:05 +08:00
1. 不用试图阻止 scroll 事件的冒泡,你会后悔的。
2. 学会使用开发者工具查看别人网站的结构
abelyao
2014-10-24 10:22:26 +08:00
revir
2014-10-24 12:57:06 +08:00
@abelyao

@chairuosen
@jsonline

多谢指教, 已经解决了。
这是我写的一个函数, 依赖 jQuery, 在chrome下测试通过:

```javascript
var soloWheel = function(element) {
window.onmousewheel = function(event) {
var el, h;
el = $(element)[0];
h = $(element).height();
if ($(element).has(event.srcElement).length || $(element).is(event.srcElement)) {
if (el.scrollTop < 5 && event.wheelDelta > 0) {
event.preventDefault();
}
if (el.scrollHeight - el.scrollTop - h < 5 && event.wheelDelta < 0) {
event.preventDefault();
}
}
};
};
```

jsbin 地址: http://jsbin.com/racowa/2/
abelyao
2014-10-24 13:05:14 +08:00
@revir 我根据那帖子做的,兼容 IE6 …
document.getElementById('side').onmousewheel = function(event) {
if (!event) event = window.event;
this.scrollTop = this.scrollTop - (event.wheelDelta ? event.wheelDelta : -event.detail * 10);
return false;
}
revir
2014-10-24 14:28:06 +08:00
@abelyao
你的方法确实比我的实现好多了!
谢谢~
thanksmymagic
2014-12-05 12:36:32 +08:00
@abelyao Hi~你好,我是笪兴,十年后(10years.me)的创始人。我刚刚看到你的回答和v2ex上的其他交流,感觉和我们的技术和团队风格都挺合拍 ,希望可以聊聊。十年后是一个基于梦想的社交网络,我们想用它让年轻人的生活更有未来性,网站是去年年末上线的。我们上个月刚拿到创新谷VC百万元天使轮融资,现在在招募Web前端开发的人才。可以加我的微信18101620531聊聊,交个朋友也不错:)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/141121

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX