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,
);
相关推荐
阿蒙Amon4 小时前
TypeScript学习-第7章:泛型(Generic)
javascript·学习·typescript
睡美人的小仙女1275 小时前
Threejs加载环境贴图报错Bad File Format: bad initial token
开发语言·javascript·redis
fanruitian5 小时前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
rayufo5 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk5 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
摘星编程6 小时前
React Native + OpenHarmony:Timeline垂直时间轴
javascript·react native·react.js
AZ996ZA6 小时前
自学linux第十八天:【Linux运维实战】系统性能优化与安全加固精要
linux·运维·安全·性能优化
2501_944525546 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
jin1233227 小时前
React Native鸿蒙跨平台完成剧本杀组队详情页面,可以复用桌游、团建、赛事等各类组队详情页开发
javascript·react native·react.js·ecmascript·harmonyos
李白你好7 小时前
Burp Suite插件用于自动检测Web应用程序中的未授权访问漏洞
前端