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 相关文章推荐
一个不错的应用,用于提交获取文章内容,不推荐用
Mar 03 Javascript
jQuery基本选择器选择元素使用介绍
Apr 18 Javascript
jQuery实现密保互斥问题解决方案
Aug 16 Javascript
一个CSS+jQuery实现的放大缩小动画效果
Feb 19 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
May 11 Javascript
利用Angularjs实现幻灯片效果
Sep 07 Javascript
关于Vue.js一些问题和思考学习笔记(2)
Dec 02 Javascript
在vue.js中抽出公共代码的方法示例
Jun 08 Javascript
vue使用axios跨域请求数据问题详解
Oct 18 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
Feb 05 Javascript
JS使用正则表达式判断输入框失去焦点事件
Oct 16 Javascript
JavaScript常用8种数组去重代码实例
Sep 09 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
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
php实现的ping端口函数实例
2014/11/12 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
popdiv
2006/07/14 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
pycharm创建一个python包方法图解
2019/04/10 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
python tkinter组件摆放方式详解
2019/09/16 Python
如何使用python传入不确定个数参数
2020/02/18 Python
sklearn+python:线性回归案例
2020/02/24 Python
室内设计实习自我鉴定
2013/09/25 职场文书
采购部岗位职责
2013/11/24 职场文书
物流业务员岗位职责
2014/02/08 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
幼儿生日活动方案
2014/08/27 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
公司业务员管理制度
2015/08/05 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
总结Python连接CS2000的详细步骤
2021/06/23 Python
MySQL中order by的执行过程
2022/06/05 MySQL