alv*_*oha 7 html javascript css
如何overflow: scroll以这样的方式创建一个固定的div,body当鼠标悬停在div上并滚动时不会滚动?有点像facebook.com上窗口底部的固定聊天框.
我已经尝试使用javascript来捕获和停止scroll,wheel并且touchmove事件从冒泡起来stopPropagation(),但它似乎不起作用.
我尽可能地简化了这个问题:https://jsfiddle.net/m9uamaza/
目标是在固定的"bar"div中向上和向下滚动而不使"foo"体移动.如果"bar"div一直滚动到底部,并且我继续滚动,我不希望身体开始滚动.当鼠标不在固定div上时,正文仍应可滚动.
我已经更新了您的答案,这是链接
https://jsfiddle.net/m9uamaza/3/
我修改了以下代码
inner.addEventListener('wheel', function(e) {
if(e.wheelDelta < 0) {
if((this.scrollHeight-this.scrollTop-200)<=0){
e.preventDefault();
}
}
else
if(this.scrollTop==0){
e.preventDefault();
}
}, false);
Run Code Online (Sandbox Code Playgroud)
如果您需要的话,这里还提供演示
inner.addEventListener('wheel', function(e) {
if(e.wheelDelta < 0) {
if((this.scrollHeight-this.scrollTop-200)<=0){
e.preventDefault();
}
}
else
if(this.scrollTop==0){
e.preventDefault();
}
}, false);
Run Code Online (Sandbox Code Playgroud)
var inner = document.getElementById('inner');
var outer = document.getElementById('outer');
inner.addEventListener('scroll', function(e) {
e.stopPropagation();
}, false);
inner.addEventListener('wheel', function(e) {
if(e.wheelDelta < 0) {
if((this.scrollHeight-this.scrollTop-200)<=0){
e.preventDefault();
}
}
else
if(this.scrollTop==0){
e.preventDefault();
}
}, false);
inner.addEventListener('touchmove', function(e) {
e.stopPropagation();
}, false);Run Code Online (Sandbox Code Playgroud)
.fixed {
position: fixed;
top: 100px;
left: 100px;
background-color: #eef;
height: 200px;
width: 200px;
overflow-y: scroll;
} Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1347 次 |
| 最近记录: |