uni-app 滑动触发列表项菜单

发布于 1周前 作者 itying888 来自 Uni-App

uni-app 滑动触发列表项菜单

MUI这种滑动触发功能:

图:

2 回复

找到了,也给其他不知道的同学地址学习一下。 https://github.com/zhangzibao/uni-app-slidelist/tree/master


在uni-app中,你可以通过监听滑动事件来触发列表项的菜单显示。下面是一个简单的代码示例,展示如何实现这一功能。

首先,确保你的项目已经创建并配置了基本的页面结构。我们将使用一个列表组件,当用户滑动列表项时,显示一个菜单。

1. 创建页面结构

pages/index/index.vue文件中,创建基本的页面结构:

<template>
  <view class="container">
    <scroll-view scroll-y="true" @scroll="onScroll">
      <view v-for="(item, index) in items" :key="index" class="list-item" :ref="'item_' + index">
        {{ item.name }}
        <view v-if="showMenu === index" class="menu">
          <button @click="handleMenuAction(index, 'edit')">Edit</button>
          <button @click="handleMenuAction(index, 'delete')">Delete</button>
        </view>
      </view>
    </scroll-view>
  </view>
</template>

2. 添加脚本逻辑

<script>标签中添加逻辑来处理滑动事件和菜单显示:

<script>
export default {
  data() {
    return {
      items: [
        { name: 'Item 1' },
        { name: 'Item 2' },
        // 更多项...
      ],
      showMenu: null,
      lastY: 0,
    };
  },
  methods: {
    onScroll(e) {
      const { scrollTop } = e.detail;
      const diff = scrollTop - this.lastY;
      if (diff > 10) { // 向下滑动
        this.showMenu = null; // 隐藏菜单
      }
      this.lastY = scrollTop;
    },
    handleItemTouchStart(event, index) {
      this.startY = event.touches[0].clientY;
      this.showMenu = index; // 显示菜单
    },
    handleMenuAction(index, action) {
      console.log(`Action ${action} on item ${index}`);
      this.showMenu = null; // 隐藏菜单
    },
  },
};
</script>

3. 添加样式

<style>标签中添加样式来美化列表和菜单:

<style scoped>
.container {
  padding: 20px;
}
.list-item {
  padding: 15px;
  border-bottom: 1px solid #ccc;
  position: relative;
}
.menu {
  position: absolute;
  top: 100%;
  left: 0;
  background: white;
  border: 1px solid #ccc;
}
.menu button {
  display: block;
  padding: 10px;
  text-align: left;
}
</style>

注意:以上代码示例假设你希望在用户长按时显示菜单。为了简化示例,未实现完整的长按逻辑。你可以结合touchstarttouchmove事件来检测长按行为,并触发菜单显示。

这个示例提供了一个基础框架,你可以根据实际需求进一步扩展和完善。

回到顶部