js判断手指的上滑,下滑,左滑,右滑,事件监听 和 判断鼠标滚轮向上滚动滑轮向下滚动

js判断手指的上滑,下滑,左滑,右滑,事件监听 和 判断鼠标滚轮向上滚动滑轮向下滚动

注意节流啊 ,看完下面就会觉得这个地方有用了

typescript 复制代码
let timer: any;
export const throttle = (func: Function, delay?: number) => {
  delay = delay || 600;
  if (!timer) {
    timer = setTimeout(() => {
      func();
      timer = null;
    }, delay);
  }
};

pc端 判断鼠标滚轮向上滚动滑轮向下滚动

const scrollFunc = (e) => {

e = e || window.event;

let wheelDelta = e.wheelDelta ? e.wheelDelta : -e.detail * 50;

if (wheelDelta > 0) {

console.log(wheelDelta + '滑轮向上滚动');

let dom = document.querySelector('.header-contanier');

dom.style.display = 'flex';

复制代码
let dom2 = document.querySelector('.navNull');
dom2.style.display = 'block';

}

if (wheelDelta < 0) {

console.log(wheelDelta + '滑轮向下滚动');

let dom = document.querySelector('.header-contanier');

let dom2 = document.querySelector('.navNull');

dom.style.display = 'none';

dom2.style.display = 'none';

}

};

if (document.addEventListener) {

//火狐使用DOMMouseScroll绑定

document.addEventListener('DOMMouseScroll', scrollFunc, false);

}

//其他浏览器直接绑定滚动事件

window.onmousewheel = document.onmousewheel = scrollFunc; //IE/Opera/Chrome

移动端 js判断手指的上滑,下滑,左滑,右滑,事件监听

// touchstart: //手指放到屏幕上时触发

// touchmove: //手指在屏幕上滑动式触发

// touchend: //手指离开屏幕时触发

// touchcancel: //系统取消touch事件的时候触发,这个好像比较少用

let startX: number = 0;

let startY: number = 0;

document.addEventListener(

'touchstart',

(e) => {

e.preventDefault();

// console.log(e);

startX = e.changedTouches0.pageX;

startY = e.changedTouches0.pageY;

},

false,

);

// document.addEventListener(

// 'touchend',

// (e) => {

// e.preventDefault();

// console.log(e);

// },

// false,

// );

document.addEventListener(

'touchmove',

(e) => {

// e.preventDefault();

let moveEndX = e.changedTouches0.pageX;

let moveEndY = e.changedTouches0.pageY;

let X = moveEndX - startX;

let Y = moveEndY - startY;

复制代码
if (Math.abs(X) > Math.abs(Y) && X > 0) {
  console.log('right');
} else if (Math.abs(X) > Math.abs(Y) && X < 0) {
  console.log('left');
} else if (Math.abs(Y) > Math.abs(X) && Y > 0) {
  console.log('bottom');
} else if (Math.abs(Y) > Math.abs(X) && Y < 0) {
  console.log('top');
} else {
  alert('just touch');
}

},

false,

);

主要代码块

typescript 复制代码
const scrollFunc = (e) => {
  e = e || window.event;
  let wheelDelta = e.wheelDelta ? e.wheelDelta : -e.detail * 50;
  if (wheelDelta > 0) {
    console.log(wheelDelta + '滑轮向上滚动');
    let dom = document.querySelector('.header-contanier');
    dom.style.display = 'flex';

    let dom2 = document.querySelector('.navNull');
    dom2.style.display = 'block';
  }
  if (wheelDelta < 0) {
    console.log(wheelDelta + '滑轮向下滚动');
    let dom = document.querySelector('.header-contanier');
    let dom2 = document.querySelector('.navNull');
    dom.style.display = 'none';
    dom2.style.display = 'none';
  }
};
if (document.addEventListener) {
  //火狐使用DOMMouseScroll绑定
  document.addEventListener('DOMMouseScroll', scrollFunc, false);
}
//其他浏览器直接绑定滚动事件
window.onmousewheel = document.onmousewheel = scrollFunc; //IE/Opera/Chrome

// touchstart:     //手指放到屏幕上时触发
// touchmove:      //手指在屏幕上滑动式触发
// touchend:    //手指离开屏幕时触发
// touchcancel:     //系统取消touch事件的时候触发,这个好像比较少用
let startX: number = 0;
let startY: number = 0;
document.addEventListener(
  'touchstart',
  (e) => {
    e.preventDefault();
    // console.log(e);
    startX = e.changedTouches[0].pageX;
    startY = e.changedTouches[0].pageY;
  },
  false,
);
// document.addEventListener(
//   'touchend',
//   (e) => {
// e.preventDefault();
//     console.log(e);
//   },
//   false,
// );
document.addEventListener(
  'touchmove',
  (e) => {
    // e.preventDefault();
    let moveEndX = e.changedTouches[0].pageX;
    let moveEndY = e.changedTouches[0].pageY;
    let X = moveEndX - startX;
    let Y = moveEndY - startY;

    if (Math.abs(X) > Math.abs(Y) && X > 0) {
      console.log('right');
    } else if (Math.abs(X) > Math.abs(Y) && X < 0) {
      console.log('left');
    } else if (Math.abs(Y) > Math.abs(X) && Y > 0) {
      console.log('bottom');
    } else if (Math.abs(Y) > Math.abs(X) && Y < 0) {
      console.log('top');
    } else {
      alert('just touch');
    }
  },
  false,
);
相关推荐
GreenTea4 小时前
GrokBot 核心成员 Lauren Tan:每月交付 2000 个 PR 的人,是怎么用 AI 的
前端·后端·架构
mCell6 小时前
用 Knip 清理 AI Coding 留下的冗余代码
前端·ai编程·前端工程化
笃行3507 小时前
使用Rokid AIUI做了一个童年推箱子游戏
前端
excel7 小时前
前端加密的作用与使用场景
前端
Doris__HE8 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】
运维·服务器·网络·数据库·性能优化
计算机魔术师9 小时前
纽约时报版权诉讼披露:微软高管内部称训练 AI 是人类历史上最大规模劳动窃取
前端
去伪存真9 小时前
大模型的参数量为什么那么大?
前端·人工智能
IT_陈寒9 小时前
Java空指针这次真把我坑惨了
前端·人工智能·后端
hhzz9 小时前
【OpenCV 入门到精通 10】视频分析与光流跟踪:背景减除与运动检测
人工智能·python·opencv·性能优化
高级程序源10 小时前
django大学生创新创业项目管理系统94923-计算机课程设计、毕业设计
javascript·vue.js·spring boot·后端·python·django·课程设计