首先定義一個全局樣式:
.noscroll{
position: fixed;
left: 0;
top: 0;
width: 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');
這樣就可以解決滾動穿透的問題了~