通常情况下,当内部滚动条滚动到两端时,再接着滚动时外层的滚动条就会跟着滚动;可是有时我们希望用户只能滚动当前区域,而不触发外层(window)的滚动条,离开当前区域后,才能滚动外层的滚动条。因为用户可能一不小心滚动的幅度过大了,导致当前区域离开可视区域。
在jquery中,滚动事件是scroll,而这个事件是不能阻止冒泡和阻止默认事件的。假如我们设定要禁止window的滚动条,我采取的策略是:当鼠标进入到当前区域后,则window的滚动条的高度始终是鼠标进入前的高度
如下的代码:
代码如下 | 复制代码 |
.main{
overflow: auto;
width: 400px;
height: 400px;
border: 1px solid #aaa;
}
.main p{
height: 800px;
}
<pstyle="height:1000px;">
$(function () {
var scrollTop = -1; // 鼠标进入到区域后,则存储当前window滚动条的高度
$('#main').hover(function(){
scrollTop = $(window).scrollTop();
}, function(){
scrollTop = -1;
});
// 鼠标进入到区域后,则强制window滚动条的高度
$(window).scroll(function(){
scrollTop!==-1 && $(this).scrollTop(scrollTop);
})
})
|
从上面的代码可以看到,我并没有阻止window滚动条的事件,而是用户每次滚动时,都会重新进行赋值。
日报 | 天风证券子公司获香港虚拟资产第三类牌照;Coinbase CEO 称公司每周都在买入更多比特币
美国通过《部署美国区块链法案》:这对加密货币意味着什么
Aptos创16日新高 首支Aptos现货ETF即将问世
L2代币面临估值泡沫与投票操控风险
分析师预测SHIB目标价格为0.000081美元,技术分析显示柴犬币可能迎来600%暴涨
MemeX推出"Proof of Sh*t"验证机制,以700万美元奖励门槛对抗AI作恶