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 相关文章推荐
javascript学习笔记(七)利用javascript来创建和存储cookie
Apr 08 Javascript
JS Map 和 List 的简单实现代码
Jul 08 Javascript
jquery+json实现数据列表分页示例代码
Nov 15 Javascript
Node.js中child_process实现多进程
Feb 03 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
Jul 18 Javascript
jQuery学习之DOM节点的插入方法总结
Jan 22 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
Jul 03 Javascript
vue.js将时间戳转化为日期格式的实现代码
Jun 05 Javascript
JavaScript JMap类定义与使用方法示例
Jan 22 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
May 30 Javascript
微信提示 在浏览器打开 效果实现过程解析
Sep 10 Javascript
解决vue+router路由跳转不起作用的一项原因
Jul 19 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连mysql和oracle数据库性能比较
2006/10/09 PHP
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
PHP 图片上传实现代码 带详细注释
2010/04/29 PHP
php笔记之:AOP的应用
2013/04/24 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
初始Nodejs
2014/11/08 NodeJs
基于JavaScript实现手机短信按钮倒计时(超简单)
2015/12/30 Javascript
JQuery Mobile实现导航栏和页脚
2016/03/09 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
javascript完美实现给定日期返回上月日期的方法
2017/06/15 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
vue 组件简介
2020/07/31 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
三查三看党性分析材料
2014/02/18 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
火灾现场处置方案
2014/05/28 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript