js实现鼠标滑动到某个div禁止滚动


Posted in Javascript onSeptember 17, 2020

本文实例为大家分享了js实现鼠标滑动到某个div禁止滚动的具体代码,供大家参考,具体内容如下

项目中碰到一个场景就是当鼠标滑倒某个div的时候,滑动鼠标页面不再滚动。

这里主要是当鼠标滑动到该div时,监听滚轮事件并通过preventDefault()事件来阻止滚动事件,以下是例子

eg:

js实现鼠标滑动到某个div禁止滚动

#wrap {
  position:absolute;
  top:200px;
  background:#000000;
  font-size: 40px;
  width:50vw;
  text-align: center;
  color: #ffffff;
  line-height: 300px;
  height:300px;
}
<div id="wrap">
 鼠标移动进入该区域,页面禁止滚动
</div>
window.onload = function () {
  for (i = 0; i < 50; i++) {
  var x = document.createElement('div');
  x.innerHTML = "test<br/>";
  document.body.appendChild(x);
  }
 
  function $(x) {
  return document.getElementById(x);
  };
  $("wrap").onmousewheel = function scrollWheel(e) {
  var sl;
  e = e || window.event;
  if (navigator.userAgent.toLowerCase().indexOf('msie') >= 0) {
   event.returnValue = false;
  } else {
   e.preventDefault();
  };
  };
  if (navigator.userAgent.toLowerCase().indexOf('firefox') >= 0) {
  //firefox支持onmousewheel
  addEventListener('DOMMouseScroll',
   function (e) {
   var obj = e.target;
   var onmousewheel;
   while (obj) {
    onmousewheel = obj.getAttribute('onmousewheel') || obj.onmousewheel;
    if (onmousewheel) break;
    if (obj.tagName == 'BODY') break;
    obj = obj.parentNode;
   };
   if (onmousewheel) {
    if (e.preventDefault) e.preventDefault();
    e.returnValue = false; //禁止页面滚动
    if (typeof obj.onmousewheel != 'function') {
    //将onmousewheel转换成function
    eval('window._tmpFun = function(event){' + onmousewheel + '}');
    obj.onmousewheel = window._tmpFun;
    window._tmpFun = null;
    };
    // 不直接执行是因为若onmousewheel(e)运行时间较长的话,会导致锁定滚动失效,使用setTimeout可避免
    setTimeout(function () {
     obj.onmousewheel(e);
    },
    1);
   };
   },
   false);
  };
}

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

Javascript 相关文章推荐
javascript中indexOf技术详解
May 07 Javascript
基于jquery实现放大镜效果
Aug 17 Javascript
jquery实现华丽的可折角广告代码
Sep 02 Javascript
详解JavaScript中的构造器Constructor模式
Jan 14 Javascript
详解JavaScript跨域总结与解决办法
Oct 31 Javascript
解析AngularJS中get请求URL出现的跨域问题
Dec 01 Javascript
利用node.js制作命令行工具方法教程(一)
Jun 22 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
Dec 13 Javascript
node.js实现上传文件功能
Jul 15 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
Oct 15 Javascript
JS的时间格式化和时间戳转换函数示例详解
Jul 27 Javascript
CocosCreator入门教程之网络通信
Apr 16 Javascript
原生js+css实现tab切换功能
Sep 17 #Javascript
vue使用screenfull插件实现全屏功能
Sep 17 #Javascript
Vue使用screenfull实现全屏效果
Sep 17 #Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
Sep 17 #Javascript
JavaScript编码小技巧分享
Sep 17 #Javascript
如何利用node转发请求详解
Sep 17 #Javascript
前端性能优化建议
Sep 17 #Javascript
You might like
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
PHP 和 MySQL 基础教程(四)
2006/10/09 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
Python中使用bidict模块双向字典结构的奇技淫巧
2016/07/12 Python
如何用python整理附件
2018/05/13 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
2018/08/02 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
2016/10/06 面试题
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
2015年中学校长工作总结
2015/05/19 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js