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

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

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

eg:

 

#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);
      };
    }

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用 jQuery 设置区域内滑动鼠标横向滚动,你可以使用以下代码: ``` $(document).ready(function() { $('#your-element').mousemove(function(e) { // 获取鼠标滚动事件 var scroll = e.originalEvent.wheelDelta; // 判断滚动方向 if (scroll > 0) { // 向右滚动 $(this).scrollLeft($(this).scrollLeft() - 20); } else { // 向左滚动 $(this).scrollLeft($(this).scrollLeft() + 20); } }); }); ``` 这段代码会在页面加载后监听 `#your-element` 元素的鼠标移动事件,并根据鼠标滚动方向更新滚动条的位置。注意,这段代码只能在区域内滑动鼠标时有效,如果鼠标在区域外滑动,代码不会起作用。 ### 回答2: JQuery可以通过使用插件或者自定义代码来设置鼠标在区域内横向滚动。以下是一个使用JQuery插件来实现这个功能的示例: 首先,在HTML文件中引入JQuery库和插件文件: ``` <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="jquery.mousewheel.min.js"></script> ``` 然后,在HTML文件中创建一个显示内容的区域,并为该区域添加一个唯一的ID: ``` <div id="scrollableArea"> <!-- 这里是显示的内容 --> </div> ``` 接下来,在JavaScript文件中编写JQuery代码来设置鼠标横向滚动: ``` $(document).ready(function() { $('#scrollableArea').on('mousewheel', function(e) { // 计算滚动的距离 var delta = e.originalEvent.deltaY; // 在此处根据需要进行滚动距离的处理 // 阻止页面滚动 e.preventDefault(); }); }); ``` 这段代码使用了JQuery的`on`方法来绑定鼠标滚动事件,当鼠标在`scrollableArea`区域内滚动时触发事件。通过`e.originalEvent.deltaY`获取鼠标滚动的距离,可以根据需要对滚动的距离进行处理,并阻止默认的页面滚动行为。 需要注意的是,上述代码中使用了一个名为`jquery.mousewheel.min.js`的插件文件来处理鼠标滚动事件,你需要在页面中引入该文件,并确保文件路径正确。 通过以上步骤,你可以使用JQuery设置一个区域内的鼠标滚动横向滚动的效果。你可以根据自己的需求进一步完善代码,比如添加动画效果、调整滚动速度等。 ### 回答3: 在使用jQuery设置区域内滑动鼠标横向滚动时,可以通过以下步骤实现: 1. 首先,确定要实现横向滚动的区域,可以是一个具有固定宽度和高度的容器。 2. 使用jQuery选择器选中该容器元素,并添加`scroll`事件。 3. 在`scroll`事件的回调函数中,获取鼠标滚动的方向。 4. 判断鼠标滚动的方向,如果是水平方向(左右滚动),则通过修改容器元素的`scrollLeft`属性来实现横向滚动。 5. 可以使用`event.preventDefault()`方法阻止默认的滚动行为,以避免页面整体滚动。 以下是一个简单的示例代码: ```javascript $(document).ready(function() { var container = $(".container"); // 选择滚动容器 container.on("scroll", function(event) { var delta = event.originalEvent.deltaX; // 获取鼠标滚动的方向 if (delta !== 0) { event.preventDefault(); // 阻止默认的滚动行为 container.scrollLeft(container.scrollLeft() + delta); // 修改scrollLeft属性实现横向滚动 } }); }); ``` 通过以上步骤,可以使用jQuery实现在指定区域内通过滑动鼠标实现横向滚动效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值