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.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,

);

主要代码块

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,
);
相关推荐
好大哥呀3 小时前
Java Web的学习路径
java·前端·学习
HashTang3 小时前
【AI 编程实战】第 7 篇:登录流程设计 - 多场景、多步骤的优雅实现
前端·uni-app·ai编程
cos4 小时前
Fork 主题如何更新?基于 Ink 构建主题更新 CLI 工具
前端·javascript·git
小满zs4 小时前
Next.js第二十一章(环境变量)
前端·next.js
C***11504 小时前
Spring aop 五种通知类型
java·前端·spring
朝阳395 小时前
前端项目的【package-lock.json】详解
前端
摸鱼的春哥5 小时前
AI编排实战:用 n8n + DeepSeek + Groq 打造全自动视频洗稿流水线
前端·javascript·后端
nece0016 小时前
vue3杂记
前端·vue
Coder_Boy_6 小时前
基于SpringAI的在线考试系统设计总案-知识点管理模块详细设计
android·java·javascript