当前位置:首页 > uni-app

uniapp鼠标事件

2026-03-05 08:29:49uni-app

uniapp 鼠标事件处理

在 uniapp 中处理鼠标事件可以通过绑定事件监听器来实现,类似于传统网页开发中的事件处理方式。uniapp 支持常见的鼠标事件,如点击、长按、滑动等。

常用鼠标事件类型

  • @click:点击事件
  • @longpress:长按事件
  • @touchstart:触摸开始事件
  • @touchmove:触摸移动事件
  • @touchend:触摸结束事件
  • @mousedown:鼠标按下事件
  • @mouseup:鼠标抬起事件
  • @mousemove:鼠标移动事件

基本事件绑定

在模板中直接绑定事件处理函数:

<template>
  <view @click="handleClick" @longpress="handleLongPress">点击或长按我</view>
</template>

<script>
export default {
  methods: {
    handleClick() {
      console.log('点击事件触发');
    },
    handleLongPress() {
      console.log('长按事件触发');
    }
  }
}
</script>

事件对象参数

事件处理函数可以接收事件对象参数,包含事件相关信息:

<template>
  <view @click="handleClickWithEvent">点击获取事件信息</view>
</template>

<script>
export default {
  methods: {
    handleClickWithEvent(event) {
      console.log('事件类型:', event.type);
      console.log('触发元素:', event.target);
      console.log('坐标位置:', {
        x: event.touches[0].clientX,
        y: event.touches[0].clientY
      });
    }
  }
}
</script>

阻止事件冒泡

使用 .stop 修饰符阻止事件冒泡:

<template>
  <view @click="outerClick">
    外层
    <view @click.stop="innerClick">内层(不会触发外层点击)</view>
  </view>
</template>

事件修饰符

uniapp 支持多种事件修饰符:

  • .stop:阻止事件冒泡
  • .prevent:阻止默认行为
  • .capture:使用捕获模式
  • .self:只有当事件是从侦听器绑定的元素本身触发时才触发回调
  • .once:只触发一次回调
<view @click.once="handleOnceClick">只会触发一次的点击</view>

自定义组件事件

对于自定义组件,可以通过 $emit 触发事件:

<template>
  <custom-button @custom-click="handleCustomClick"></custom-button>
</template>

<script>
export default {
  methods: {
    handleCustomClick(data) {
      console.log('自定义事件触发:', data);
    }
  }
}
</script>

在自定义组件内部:

this.$emit('custom-click', { message: '来自子组件的数据' });

鼠标移动跟踪示例

实现一个跟随鼠标移动的元素:

<template>
  <view 
    @mousemove="handleMouseMove"
    style="height: 500px; background: #eee; position: relative;"
  >
    <view 
      :style="{ 
        position: 'absolute',
        left: position.x + 'px',
        top: position.y + 'px',
        width: '50px',
        height: '50px',
        background: 'red'
      }"
    ></view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      position: { x: 0, y: 0 }
    };
  },
  methods: {
    handleMouseMove(event) {
      this.position = {
        x: event.clientX - 25,
        y: event.clientY - 25
      };
    }
  }
}
</script>

注意事项

  1. 在移动端,mousemove 等鼠标事件可能不会像在桌面浏览器中那样频繁触发
  2. 部分鼠标事件在移动设备上可能表现不同,建议同时考虑触摸事件
  3. 事件处理函数中避免执行耗时操作,以免影响性能
  4. 使用事件委托可以提高性能,特别是在处理大量相似元素的场景

uniapp鼠标事件

标签: 鼠标事件
分享给朋友:

相关文章

css3怎么制作鼠标

css3怎么制作鼠标

使用CSS3制作鼠标样式 可以通过CSS的cursor属性自定义鼠标指针样式,结合伪元素或动画实现更复杂效果。 自定义系统预设指针 .element { cursor: pointer…

jquery添加事件

jquery添加事件

jQuery 添加事件的方法 jQuery 提供了多种方法来为元素添加事件监听。以下是一些常用的方式: 使用 .on() 方法 .on() 是 jQuery 中推荐的事件绑定方法,支持直接绑定和委托…

jquery鼠标事件

jquery鼠标事件

jQuery鼠标事件概述 jQuery提供了一系列鼠标事件处理方法,用于响应用户的鼠标操作,如点击、悬停、移动等。这些事件通过简洁的语法绑定到DOM元素,实现交互功能。 常用鼠标事件方法 cl…

vue实现change事件

vue实现change事件

Vue 实现 change 事件的方法 在 Vue 中,可以通过多种方式监听和处理 change 事件,以下是常见的实现方法: 使用 v-on 或 @ 语法监听 change 事件 <t…

vue 实现事件委托

vue 实现事件委托

Vue 中实现事件委托的方法 事件委托是一种通过将事件监听器绑定到父元素而非子元素的技术,利用事件冒泡机制统一处理子元素的事件。Vue 中可以通过以下方式实现: 1. 使用 v-on 和事件修饰符…

vue实现后退事件

vue实现后退事件

监听浏览器后退事件 在Vue中可以通过window.onpopstate或beforeRouteLeave路由守卫实现后退事件监听。以下是两种常用方法: 方法一:使用window.onpopstat…