uni-app 抖音滑动插件需求

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

uni-app 抖音滑动插件需求

抖音视频滑动效果 上滑(上一个视频) 下滑(下一个视频) 由于video视频在顶部无法使用scroll-view实现而cover-view只有点击事件 本人实在想不到什么办法来实现了。 uniapp底层没法支持了吗? 希望能有大神给出解决方案。

```
开发环境 版本号 项目创建方式
uni-app
4 回复

插件市场已经有了,搜一下


别争了,用这个终极解决方案。这个太灵敏了。灵敏度可以自己修改上面的条件自由设置。 https://ext.dcloud.net.cn/plugin?id=860

加我QQ1248828984给你解决

针对uni-app中实现抖音滑动插件的需求,可以通过集成第三方滑动组件或自定义滑动逻辑来实现。以下是一个基本的自定义滑动列表组件的代码示例,使用了uni-app的<scroll-view>组件和JavaScript的触摸事件来实现类似抖音的滑动效果。

1. 创建组件文件 TikTokScroll.vue

<template>
  <view class="container">
    <scroll-view
      class="scroll-view"
      scroll-y="false"
      scroll-with-animation="true"
      @scrolltolower="loadMore"
      @touchstart="onTouchStart"
      @touchmove="onTouchMove"
      @touchend="onTouchEnd"
    >
      <view class="item" v-for="(item, index) in items" :key="index">
        <!-- 这里放置你的内容,比如图片、文本等 -->
        <image :src="item.image" class="item-image"></image>
      </view>
    </scroll-view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      items: [], // 初始数据
      startX: 0, // 开始触摸的X坐标
      endX: 0,   // 结束触摸的X坐标
      diffX: 0,  // 滑动距离
    };
  },
  methods: {
    // 加载更多数据
    loadMore() {
      // 模拟加载数据
      this.items = [...this.items, ...Array(10).fill(null).map((_, i) => ({
        image: `https://example.com/image${i + 1}.jpg`,
      }));
    },
    onTouchStart(event) {
      this.startX = event.touches[0].pageX;
    },
    onTouchMove(event) {
      this.endX = event.touches[0].pageX;
      this.diffX = this.startX - this.endX;
      // 可以在这里添加滑动逻辑,比如判断滑动方向
    },
    onTouchEnd() {
      // 根据diffX的值判断滑动方向并执行相应操作
      if (this.diffX > 50) {
        console.log('向右滑动');
      } else if (this.diffX < -50) {
        console.log('向左滑动');
      }
      // 重置坐标
      this.startX = this.endX = this.diffX = 0;
    },
  },
  mounted() {
    // 初始化数据
    this.loadMore();
  },
};
</script>

<style scoped>
.container {
  width: 100%;
  height: 100%;
  overflow: hidden;
}
.scroll-view {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: row;
  scroll-behavior: smooth;
}
.item {
  min-width: 100vw;
  flex-shrink: 0;
  box-sizing: border-box;
}
.item-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
</style>

2. 使用组件

在你的页面文件中引入并使用这个组件:

<template>
  <view>
    <TikTokScroll></TikTokScroll>
  </view>
</template>

<script>
import TikTokScroll from '@/components/TikTokScroll.vue';

export default {
  components: {
    TikTokScroll,
  },
};
</script>

这个示例展示了如何创建一个基本的滑动列表组件,并处理触摸事件以实现滑动效果。你可以根据实际需求进一步扩展和优化这个组件。

回到顶部