当前位置:首页 > uni-app

uniapp 长按菜单

2026-03-05 00:06:12uni-app

长按菜单实现方法

在UniApp中实现长按菜单功能,可以通过以下几种方式完成:

使用@longpress事件监听 通过绑定@longpress事件来触发菜单显示,适合基础需求:

<template>
  <view @longpress="showMenu">长按显示菜单</view>
  <view v-if="menuVisible" class="menu-popup">
    <text @click="handleMenu(1)">选项1</text>
    <text @click="handleMenu(2)">选项2</text>
  </view>
</template>

<script>
export default {
  data() {
    return {
      menuVisible: false
    }
  },
  methods: {
    showMenu() {
      this.menuVisible = true
    },
    handleMenu(index) {
      console.log('选择选项', index)
      this.menuVisible = false
    }
  }
}
</script>

使用uni.showActionSheet API 调用官方提供的底部操作菜单接口,样式统一且支持多端:

methods: {
  showActionMenu() {
    uni.showActionSheet({
      itemList: ['选项A', '选项B', '选项C'],
      success: (res) => {
        console.log('选中项索引:', res.tapIndex)
      }
    })
  }
}

自定义弹出菜单组件 创建可复用的自定义组件实现更灵活的菜单样式:

<!-- components/long-press-menu.vue -->
<template>
  <view>
    <slot @longpress="toggleMenu"></slot>
    <view v-if="visible" class="custom-menu">
      <view v-for="(item,index) in items" :key="index" @click="selectItem(index)">
        {{ item.text }}
      </view>
    </view>
  </view>
</template>

<script>
export default {
  props: {
    items: Array
  },
  data() {
    return {
      visible: false
    }
  },
  methods: {
    toggleMenu() {
      this.visible = !this.visible
    },
    selectItem(index) {
      this.$emit('select', index)
      this.visible = false
    }
  }
}
</script>

注意事项

  • 在H5端自定义菜单时需注意z-index层级问题
  • 小程序平台部分API存在样式限制,需测试多端兼容性
  • 长按事件在iOS设备上可能有300ms延迟,可通过CSS解决:
    .menu-target {
    -webkit-touch-callout: none;
    user-select: none;
    }

扩展功能

实现带图标的菜单项:

uni.showActionSheet({
  itemList: ['★ 收藏', '⎘ 分享', '✎ 编辑'],
  success(e) {
    console.log(e.tapIndex)
  }
})

添加菜单取消回调:

uni.showActionSheet({
  itemList: ['选项1', '选项2'],
  fail(err) {
    console.log('取消选择', err)
  }
})

uniapp 长按菜单

标签: 菜单uniapp
分享给朋友:

相关文章

jquery菜单

jquery菜单

以下是关于使用jQuery创建交互式菜单的几种常见方法及实现示例: 基础下拉菜单实现 通过jQuery的slideToggle和toggleClass实现简单下拉效果: $('.menu-it…

uniapp应用市场

uniapp应用市场

uniapp应用市场概述 Uniapp作为跨平台开发框架,支持将代码编译到iOS、Android、Web及各类小程序平台。其应用市场(插件市场)是开发者获取扩展插件、模板、组件的重要资源库,涵盖UI组…

uniapp视频

uniapp视频

uniapp视频开发基础 uniapp支持通过video组件实现视频播放功能,该组件兼容多端(H5、小程序、App等),基本用法如下: <template> <video…

精通uniapp

精通uniapp

掌握UniApp的基础知识 UniApp是一个基于Vue.js的跨平台开发框架,支持一次开发多端部署(如H5、小程序、App等)。核心概念包括Vue语法、组件化开发、条件编译(针对不同平台适配)以及U…

任务 uniapp

任务 uniapp

uniapp 简介 Uniapp 是一款基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App、快应用等)。其核心优势在于代码复用率高,开发者可以通过一套代码适配多个…

重构uniapp

重构uniapp

重构 Uniapp 项目的关键方法 代码结构优化 将页面、组件、静态资源按功能模块划分,避免全部堆放在根目录。建议采用以下结构: src/ ├── components/ // 通用组件…