全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

JS原生点击事件用法介绍

发布时间:2023-11-22 07:22:20
发布人:xqq

一、click事件

1、click事件是JS原生提供的最基本的鼠标点击事件,即用户单击鼠标左键触发。它可以被添加在大多数HTML元素上,如按钮、链接、图像和表单元素等。


const btn = document.querySelector(".btn");
btn.addEventListener("click", function() {
  console.log("Button clicked");
});

2、click事件通常用于执行一些与用户交互相关的操作,如触发表单提交、打开链接或动态加载内容等。同时,click事件也可以通过JS来模拟触发,以实现自动化操作。


const btn = document.querySelector(".btn");
btn.click(); //模拟点击按钮

3、click事件还有两个相关的方法:preventDefault()和stopPropagation()。preventDefault()方法阻止默认行为,如表单提交或链接跳转;stopPropagation()方法停止事件传递,防止事件冒泡。


const link = document.querySelector(".link");
link.addEventListener("click", function(event) {
  event.preventDefault(); //阻止默认行为
  event.stopPropagation(); //停止事件传递
});

二、mousedown和mouseup事件

1、mousedown事件在用户按下鼠标键时触发,而mouseup事件则在用户释放鼠标键时触发。这两个事件和click事件结合使用,可以实现更复杂的用户交互效果。


const btn = document.querySelector(".btn");
btn.addEventListener("mousedown", function() {
  console.log("Button pressed");
});
btn.addEventListener("mouseup", function() {
  console.log("Button released");
});
btn.addEventListener("click", function() {
  console.log("Button clicked");
});

2、mousedown和mouseup事件还可以配合mousemove事件一起使用,实现拖拽和缩放等复杂的UI交互效果。


const box = document.querySelector(".box");
let isDragging = false;
let startX, startY;

box.addEventListener("mousedown", function(event) {
  isDragging = true;
  startX = event.clientX - box.offsetLeft;
  startY = event.clientY - box.offsetTop;
});

box.addEventListener("mouseup", function() {
  isDragging = false;
});

box.addEventListener("mousemove", function(event) {
  if (isDragging) {
    box.style.left = event.clientX - startX + "px";
    box.style.top = event.clientY - startY + "px";
  }
});

三、dblclick事件

1、dblclick事件在用户双击鼠标左键时触发,通常用于实现一些对用户行为高度敏感的操作,如创建新窗口、更改页面样式等。


const box = document.querySelector(".box");
box.addEventListener("dblclick", function() {
  console.log("Box double clicked");
});

2、dblclick事件同样也可以被模拟触发,以实现自动化操作。


const box = document.querySelector(".box");
box.dispatchEvent(new MouseEvent("dblclick")); //模拟双击事件

四、contextmenu事件

1、contextmenu事件在用户右击鼠标时触发,通常用于显示上下文菜单或自定义菜单。默认情况下,右键点击浏览器窗口会弹出浏览器默认菜单。


const menu = document.querySelector(".menu");
document.addEventListener("contextmenu", function(event) {
  event.preventDefault(); //阻止默认菜单
  menu.style.left = event.clientX + "px";
  menu.style.top = event.clientY + "px";
  menu.style.display = "block";
});

2、contextmenu事件也可以通过JS来触发,以实现自动化操作。


const menu = document.querySelector(".menu");
menu.dispatchEvent(new MouseEvent("contextmenu", { bubbles: true, cancelable: true, clientX: 100, clientY: 100 })); //模拟右键点击事件

五、touchstart、touchmove和touchend事件

1、touchstart事件在用户触摸屏幕时触发,而touchmove事件则在用户移动手指时触发,touchend事件则在用户将手指从屏幕上移开时触发。这三个事件可以用来识别用户手势,实现拖拽、切换、缩放等复杂的手势操作。


const box = document.querySelector(".box");
let isDragging = false;
let startX, startY;

box.addEventListener("touchstart", function(event) {
  isDragging = true;
  startX = event.touches[0].clientX - box.offsetLeft;
  startY = event.touches[0].clientY - box.offsetTop;
});

box.addEventListener("touchmove", function(event) {
  if (isDragging) {
    event.preventDefault(); //阻止页面滚动
    box.style.left = event.touches[0].clientX - startX + "px";
    box.style.top = event.touches[0].clientY - startY + "px";
  }
});

box.addEventListener("touchend", function() {
  isDragging = false;
});

2、除了touchstart、touchmove和touchend事件外,还有一些与移动设备相关的事件,如touchcancel、gesturestart、gesturechange和gestureend等。这些事件可以用来实现更复杂的手势操作,如双指旋转、双指缩放等。


const box = document.querySelector(".box");
let isRotating = false;
let lastAngle;

box.addEventListener("gesturestart", function(event) {
  isRotating = true;
  lastAngle = event.rotation;
});

box.addEventListener("gesturechange", function(event) {
  if (isRotating) {
    box.style.transform = "rotate(" + (lastAngle - event.rotation) + "deg)";
    lastAngle = event.rotation;
  }
});

box.addEventListener("gestureend", function() {
  isRotating = false;
});

linuxgrep-e

相关文章

C# implicit详解

C# implicit详解

2023-11-22
Bat脚本中文乱码问题详解

Bat脚本中文乱码问题详解

2023-11-22
深入探究bitmatrix

深入探究bitmatrix

2023-11-22
如何在Java中创建文件夹

如何在Java中创建文件夹

2023-11-22

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31
在线咨询 免费试学 教程领取