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技巧--转义符&quot;\&quot;的妙用
Jan 09 Javascript
使用js实现雪花飘落效果
Aug 26 Javascript
JavaScript实现简单的数字倒计时
May 15 Javascript
动态加载jQuery的两种方法实例分析
Jul 17 Javascript
KnockoutJs快速入门教程
May 16 Javascript
如何在JS中实现相互转换XML和JSON
Jul 19 Javascript
bootstrap网格系统使用方法解析
Jan 13 Javascript
微信小程序侧边栏滑动特效(左右滑动)
Jan 23 Javascript
微信小程序 自定义消息提示框
Aug 06 Javascript
vue data恢复初始化数据的实现方法
Oct 31 Javascript
JS script脚本中async和defer区别详解
Jun 24 Javascript
vue 实现一个简单的全局调用弹窗案例
Sep 10 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 信息采集程序代码
2009/03/17 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
window.onload使用指南
2015/09/13 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
2015/11/15 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
2017/03/15 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
使用JSON格式提交数据到服务端的实例代码
2018/04/01 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
jQuery实现推拉门效果
2020/10/19 jQuery
keep-alive保持组件状态的方法
2020/12/02 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
python实现屏保计时器的示例代码
2018/08/08 Python
python+flask实现API的方法
2018/11/21 Python
python中partial()基础用法说明
2018/12/30 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
python yield和Generator函数用法详解
2020/02/10 Python
CSS3制作半透明边框(Facebox)类似渐变
2012/12/09 HTML / CSS
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2013/05/03 面试题
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
产品质量保证书
2014/04/29 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python