首先定义一个全局样式:
.noscroll{
position: fixed;
left: 0;
top: 0;
100%;
}
创建一个dom.js文件,定义几个方法:
export function hasClass(el, className) {
let reg = new RegExp('(^|\s)' + className + '(\s|$)')
return reg.test(el.className)
}
export function addClass(el, className) {
if (hasClass(el, className)) {
return
}
if(el.className === ''){
el.className += className
}else{
let newClass = el.className.split(' ')
newClass.push(className)
el.className = newClass.join(' ')
}
}
export function removeClass(el,className) {
if (hasClass(el, className)) {
el.className = el.className.replace(new RegExp('(\s|^)' + className + '(\s|$)'), '');
};
}
获取<html>标签的DOM:
this.htmlDom = document.getElementsByTagName('html')[0];
在弹框弹出来的时候:
addClass(this.htmlDom, 'noscroll');
弹框关闭的时候
removeClass(this.htmlDom, 'noscroll');
这样就可以解决滚动穿透的问题了~