当前位置:首页 > uni-app

uniapp左滑窗口

2026-03-05 12:31:45uni-app

左滑窗口实现方法

在UniApp中实现左滑窗口效果,通常可以通过以下两种方式实现:

方式一:使用<swipe-action>组件

UniApp官方提供了<swipe-action>组件,专门用于实现滑动操作:

<template>
  <view>
    <swipe-action>
      <swipe-action-item :options="options" @click="handleClick">
        <view class="content">滑动我试试</view>
      </swipe-action-item>
    </swipe-action>
  </view>
</template>

<script>
export default {
  data() {
    return {
      options: [
        {
          text: '删除',
          style: {
            backgroundColor: '#dd524d'
          }
        },
        {
          text: '收藏',
          style: {
            backgroundColor: '#007aff'
          }
        }
      ]
    }
  },
  methods: {
    handleClick(e) {
      console.log('点击了按钮', e.index)
    }
  }
}
</script>

方式二:自定义滑动效果

通过touch事件和CSS动画实现自定义滑动:

uniapp左滑窗口

<template>
  <view class="swipe-container" 
        @touchstart="touchStart" 
        @touchmove="touchMove" 
        @touchend="touchEnd">
    <view class="content" :style="{transform: `translateX(${translateX}px)`}">
      可滑动内容
    </view>
    <view class="actions">
      <view class="action-btn" @click="handleAction(1)">按钮1</view>
      <view class="action-btn" @click="handleAction(2)">按钮2</view>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      startX: 0,
      translateX: 0,
      maxTranslate: -120
    }
  },
  methods: {
    touchStart(e) {
      this.startX = e.touches[0].clientX
    },
    touchMove(e) {
      const moveX = e.touches[0].clientX - this.startX
      if (moveX < 0) {
        this.translateX = Math.max(moveX, this.maxTranslate)
      }
    },
    touchEnd() {
      if (this.translateX < this.maxTranslate / 2) {
        this.translateX = this.maxTranslate
      } else {
        this.translateX = 0
      }
    },
    handleAction(type) {
      console.log('执行操作', type)
      this.translateX = 0
    }
  }
}
</script>

<style>
.swipe-container {
  position: relative;
  overflow: hidden;
}
.content {
  width: 100%;
  height: 100px;
  background: #fff;
  transition: transform 0.3s;
  z-index: 2;
}
.actions {
  position: absolute;
  right: 0;
  top: 0;
  height: 100px;
  display: flex;
}
.action-btn {
  width: 60px;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #007aff;
  color: white;
}
</style>

注意事项

  1. 在iOS平台上可能需要额外处理滚动冲突问题
  2. 自定义实现时要注意性能优化,避免频繁的DOM操作
  3. 滑动操作的触发阈值需要根据实际体验调整
  4. 考虑添加动画过渡效果提升用户体验

两种方式各有优劣,官方组件使用简单但自定义程度低,自定义实现灵活性高但需要更多开发工作。

标签: 窗口uniapp
分享给朋友:

相关文章

uniapp极光推送

uniapp极光推送

uniapp极光推送集成步骤 准备工作 注册极光推送开发者账号,创建应用获取AppKey。确保uniapp项目已配置好原生插件支持。 安装插件 在uniapp项目manifest.json文件中,选…

uniapp样式库

uniapp样式库

uniapp 常用样式库推荐 uView UI uView 是专为 uniapp 设计的多端兼容 UI 框架,提供丰富的组件和工具类。支持 Vue3 组合式 API,内置主题定制功能,常用于快速构建企…

uniapp组件

uniapp组件

uniapp组件基础概念 uniapp的组件系统基于Vue.js,支持跨平台开发(H5、小程序、App等)。组件分为内置基础组件(如<view>、<button>)和自定义组件…

uniapp隐藏右侧滚动条

uniapp隐藏右侧滚动条

隐藏右侧滚动条的方法 在UniApp中隐藏右侧滚动条可以通过CSS样式实现,适用于H5、小程序等平台。以下是几种常见的方法: 全局样式设置 在App.vue的全局样式中添加以下CSS代码,适用于所有…

uniapp指南

uniapp指南

开发环境搭建 下载HBuilderX作为官方推荐的开发工具,支持Windows和Mac系统。安装后创建uni-app项目,选择模板(如默认模板、Hello Uni-app等)。确保Node.js版本在…

uniapp 录像

uniapp 录像

uniapp 录像功能实现 在uniapp中实现录像功能可以通过调用uni-app的API或结合第三方插件完成。以下是常见的实现方法: 使用uni.chooseVideo方法 uni.choose…