欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

vue 弹框产生的滚动穿透问题的解决

程序员文章站 2023-11-15 13:17:34
最近开发过程中遇到一些小问题(似乎问题总是那么多),但一直没什么时间去优化与解决。程序员不能被业务绑架,有时间还是花点在代码,开始这次的vue尝试吧。 首先定义一个全局样...

最近开发过程中遇到一些小问题(似乎问题总是那么多),但一直没什么时间去优化与解决。程序员不能被业务绑架,有时间还是花点在代码,开始这次的vue尝试吧。

首先定义一个全局样式:

.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');

这样就可以解决滚动穿透的问题了~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。