为了账号安全,请及时绑定邮箱和手机立即绑定

如何以编程方式禁用jQuery页面滚动

如何以编程方式禁用jQuery页面滚动

蝴蝶不菲 2019-07-02 16:30:48
如何以编程方式禁用jQuery页面滚动使用jQuery,我想禁用身体的滚动:我的想法是:集body{ overflow: hidden;}捕捉电流scrollTop();/scrollLeft()绑定到主体滚动事件,将滚动顶/滚动左侧设置为捕获的值。有更好的办法吗?最新情况:请看看我的例子,以及为什么http://jsbin.com/ikuma4/2/edit我知道有人会想“他为什么不position: fixed在面板上?“。请不要提出这个建议,因为我有其他原因。
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

我发现做这件事的唯一方法与你所描述的相似:


抓取当前滚动位置(不要忘记水平轴!)

将溢出设置为隐藏(可能希望保留以前的溢出值)。

将文档滚动到已存储的滚动位置,并使用SCROLLTO()。

当你准备再次允许滚动时,撤销所有这些。


编辑:没有理由我不能给你代码,因为我费尽心思去挖掘它.


// lock scroll position, but retain settings for later

var scrollPosition = [

  self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,

  self.pageYOffset || document.documentElement.scrollTop  || document.body.scrollTop

];

var html = jQuery('html'); // it would make more sense to apply this to body, but IE7 won't have that

html.data('scroll-position', scrollPosition);

html.data('previous-overflow', html.css('overflow'));

html.css('overflow', 'hidden');

window.scrollTo(scrollPosition[0], scrollPosition[1]);



// un-lock scroll position

var html = jQuery('html');

var scrollPosition = html.data('scroll-position');

html.css('overflow', html.data('previous-overflow'));

window.scrollTo(scrollPosition[0], scrollPosition[1])


查看完整回答
反对 回复 2019-07-02
?
长风秋雁

TA贡献1757条经验 获得超7个赞

尝尝这个

$('#element').on('scroll touchmove mousewheel', function(e){
  e.preventDefault();
  e.stopPropagation();
  return false;})


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 405 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信