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,
);
相关推荐
海石7 小时前
📱随时随地大小编:TraeSolo 移动端初体验
前端·ai编程·trae
爱滑雪的码农9 小时前
详细说说React大型项目结构以及日常开发核心语法
前端·javascript·react.js
七牛开发者9 小时前
HTML is the new Markdown:来自 Claude Code 团队的实践
前端·人工智能·语言模型·html
@大迁世界10 小时前
43.HTML 事件处理和 React 事件处理有什么区别?
前端·javascript·react.js·html·ecmascript
CloneCello10 小时前
AI时代程序员认知调整指南
前端
ZC跨境爬虫11 小时前
跟着 MDN 学 HTML day_38:(DocumentFragment 文档片段接口详解)
前端·javascript·ui·html·音视频
@大迁世界12 小时前
41.ShadCN 是什么?它如何和 Tailwind CSS 集成,从而更容易构建可访问且可自定义的 React 组件?
前端·javascript·css·react.js·前端框架
千叶风行12 小时前
Text-to-SQL 技术设计与注意事项
前端·人工智能·后端
软件开发技术深度爱好者12 小时前
HTML5+JavaScript读取DOCX 文档完整内容
前端·html5
幽络源小助理13 小时前
苹果CMS V10 MXPro V4.5模版下载, 自适应视频主题源码, 幽络源源码
前端·开源·源码·php源码