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


Posted in Javascript onSeptember 21, 2018

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

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

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

Javascript 相关文章推荐
js动态加载以及确定加载完成的代码
Jul 31 Javascript
JavaScript实现表格排序方法
Jun 14 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
Aug 23 Javascript
SinaEditor使用方法详解
Dec 28 Javascript
js如何调用qq互联api实现第三方登录
Mar 28 Javascript
js数组操作常用方法
May 08 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
Sep 04 Javascript
jquery读写cookie操作实例分析
Dec 24 Javascript
浅谈js常用内置方法和对象
Sep 24 Javascript
几句话带你理解JS中的this、闭包、原型链
Sep 26 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
Jun 25 Javascript
原生js实现淘宝放大镜效果
Oct 28 Javascript
vue-quill-editor富文本编辑器简单使用方法
Sep 21 #Javascript
探秘vue-rx 2.0(推荐)
Sep 21 #Javascript
Vue-Quill-Editor富文本编辑器的使用教程
Sep 21 #Javascript
vue+axios实现文件下载及vue中使用axios的实例
Sep 21 #Javascript
vue-rx的初步使用教程
Sep 21 #Javascript
基于Vue 服务端Cookies删除的问题
Sep 21 #Javascript
Vue中插入HTML代码的方法
Sep 21 #Javascript
You might like
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
php session的锁和并发
2016/01/22 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
python使用xmlrpc实例讲解
2013/12/17 Python
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
python 打印对象的所有属性值的方法
2016/09/11 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
python破解zip加密文件的方法
2018/05/31 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
泰国网上购物:Shopee泰国
2018/09/14 全球购物
彪马日本官网:PUMA日本
2019/01/31 全球购物
外企测试工程师面试题
2015/02/01 面试题
大学生职业生涯规划书范文
2014/01/14 职场文书
小学毕业感言300字
2014/02/19 职场文书
乡镇消防工作实施方案
2014/03/27 职场文书
法人任命书范本
2014/06/04 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
python分分钟绘制精美地图海报
2022/02/15 Python
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js