Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

移动端,JQUERY如何实现点击并弹窗后,禁止页面滚动?

问题如标题所示。
比如,页面滚动到一半的位置,点击某个文字弹窗,然后页面禁止滚动?

我使用overflow:hidden,或position:fixed,在IOS端都会返回顶部,但我不需要返回顶部,只需要在哪弹窗就在哪禁止页面滚动。请问该怎么做啊?还望大佬能够给予帮助,非常感谢!~


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

这种场景很常见,通常是在弹窗弹起的时候同时修改body的样式,将body的内容通过overflow切掉当前窗口以外的内容(实际上就是给body定个位,然后top设置成当前滚动的位置。)
给你个示例代码:

if(val){//弹窗弹起的时候
                this.top = document.documentElement.scrollTop;
                document.body.style.position = 'fixed';
                document.body.style.height = '100vh';
                document.body.style.overflow = 'hidden';
                document.body.style.top = -+this.top+'px';

            }else{//弹窗消失的时候
                document.body.style.position = 'static';
                document.body.style.height = 'auto';
                document.body.style.overflow = 'auto';
                window.scrollTo(0,this.top)
            }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...