千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > JS原生点击事件用法介绍

JS原生点击事件用法介绍

来源:千锋教育
发布人:xqq
时间: 2023-11-22 07:22:20 1700608940

一、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;
});

tags: linuxgrep-e
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT