移动端监听用户在盒子内的滑动事件

3 篇文章 0 订阅
let startx, starty;

    //获得角度
    function getAngle(angx, angy) {
      return (Math.atan2(angy, angx) * 180) / Math.PI;
    }
    //根据起点终点返回方向 1向上滑动 2向下滑动 3向左滑动 4向右滑动 0点击事件
    function getDirection(startx, starty, endx, endy) {
      let angx = endx - startx;
      let angy = endy - starty;
      let result = 0;

      //如果滑动距离太短
      if (Math.abs(angx) < 2 && Math.abs(angy) < 2) {
        return result;
      }

      let angle = getAngle(angx, angy);
      if (angle >= -135 && angle <= -45) {
        result = 1;
      } else if (angle > 45 && angle < 135) {
        result = 2;
      } else if (
        (angle >= 135 && angle <= 180) ||
        (angle >= -180 && angle < -135)
      ) {
        result = 3;
      } else if (angle >= -45 && angle <= 45) {
        result = 4;
      }
      return result;
    }
    //手指接触屏幕
    document.querySelector(".content").addEventListener(
      "touchstart",
      function(e) {
        startx = e.touches[0].pageX;
        starty = e.touches[0].pageY;
      },
      false
    );

    //手指离开屏幕
    document.querySelector(".content").addEventListener(
      "touchend",
      function(e) {
        let endx, endy;
        endx = e.changedTouches[0].pageX;
        endy = e.changedTouches[0].pageY;
        let direction = getDirection(startx, starty, endx, endy);
        switch (direction) {
          case 0:
            // 点击
            break;
          case 1:
            // 向上
            break;
          case 2:
            // 向下
            break;
          case 3:
            // 向左
            break;
          case 4:
            // 向右
            break;
          default:
            // 点击
            break;
        }
      },
      false
    );
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值