当前位置:首页 > uni-app

uniapp 卡片滑动

2026-02-06 02:05:50uni-app

uniapp 实现卡片滑动效果

使用swiper组件实现基础滑动

在uniapp中,可以利用swiperswiper-item组件快速实现卡片滑动效果。这种方式适合横向滑动的卡片布局。

<template>
  <swiper class="card-swiper" :indicator-dots="true" :autoplay="false">
    <swiper-item v-for="(item, index) in cardList" :key="index">
      <view class="swiper-item">
        <card :data="item"></card>
      </view>
    </swiper-item>
  </swiper>
</template>

<script>
export default {
  data() {
    return {
      cardList: [
        {title: '卡片1', content: '内容1'},
        {title: '卡片2', content: '内容2'},
        {title: '卡片3', content: '内容3'}
      ]
    }
  }
}
</script>

<style>
.card-swiper {
  height: 300px;
}
.swiper-item {
  padding: 15px;
}
</style>

使用movable-area实现自定义滑动

如果需要更灵活的滑动效果,可以使用movable-areamovable-view组件组合实现。

<template>
  <movable-area class="movable-area">
    <movable-view class="movable-view" direction="horizontal" @change="onChange">
      <view v-for="(item, index) in cardList" :key="index" class="card">
        {{item.title}}
      </view>
    </movable-view>
  </movable-area>
</template>

<style>
.movable-area {
  width: 100%;
  height: 300px;
}
.movable-view {
  display: flex;
  height: 100%;
}
.card {
  width: 80vw;
  margin: 0 10px;
  background: #fff;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
</style>

使用第三方组件库

uni-ui和uView等第三方组件库提供了更完善的卡片滑动组件。

安装uni-ui后使用:

<template>
  <uni-swipe-action>
    <uni-swipe-action-item v-for="(item, index) in list" :key="index">
      <view class="card-content">
        {{item}}
      </view>
    </uni-swipe-action-item>
  </uni-swipe-action>
</template>

手势滑动事件处理

通过touch事件实现更精细的滑动控制:

methods: {
  touchStart(e) {
    this.startX = e.touches[0].clientX
  },
  touchMove(e) {
    this.moveX = e.touches[0].clientX
    this.offsetX = this.moveX - this.startX
    // 根据offsetX更新卡片位置
  },
  touchEnd() {
    // 判断滑动距离决定是否切换卡片
  }
}

性能优化建议

大量卡片滑动时应注意性能优化,可采用虚拟列表技术。uniapp的<recycle-list>组件或第三方解决方案如mescroll可帮助优化长列表滑动性能。

uniapp 卡片滑动

卡片内容避免使用过多复杂样式和图片,滑动动画尽量使用CSS transform而非修改定位属性。

标签: 卡片uniapp
分享给朋友:

相关文章

uniapp实现标题栏渐变

uniapp实现标题栏渐变

实现标题栏渐变的方法 在UniApp中实现标题栏渐变效果,可以通过修改页面的导航栏样式或使用自定义导航栏来实现。以下是几种常见的方法: 方法一:使用原生导航栏渐变 通过修改pages.json中的…

uniapp斑马

uniapp斑马

uniapp 斑马相关问题解答 uniapp 斑马打印机连接与使用 uniapp 支持通过蓝牙或网络连接斑马打印机,需要借助原生插件或第三方 SDK。以下为常见方法: 蓝牙连接方式 安装 uni-…

uniapp编译结果

uniapp编译结果

uniapp编译结果 uniapp的编译结果会根据目标平台不同而生成不同的输出文件。以下是主要平台的编译结果说明: H5平台 编译后会生成一个/dist/build/h5目录,包含标准的HTML5应…

uniapp 服务文件

uniapp 服务文件

uniapp 服务文件的概念 在 uniapp 中,服务文件通常指用于封装业务逻辑、接口请求或通用功能的 JavaScript 文件。这类文件通常存放在项目的 common 或 utils 目录下,便…

vue实现卡片切换

vue实现卡片切换

Vue实现卡片切换的方法 使用v-if和v-show指令 通过Vue的指令控制卡片的显示与隐藏,适合简单的卡片切换需求。 <template> <div> <…

vue实现删除卡片

vue实现删除卡片

实现删除卡片功能 在Vue中实现删除卡片功能通常涉及以下几个关键步骤: 数据绑定与列表渲染 使用v-for指令渲染卡片列表,确保每个卡片有唯一标识符(通常为id): <div v-for="…