uni-app 仿抖音首页视频滑动功能

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

uni-app 仿抖音首页视频滑动功能

抖音首页视频滑动

24 回复

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


华为mate20pro, 系统安卓9,插件市场那个仿抖音的项目,上下滑动 都十分不灵敏,能不能优化适配

插件市场那个,不知道是因为swipper的适配还是什么,小米是不能上下滑动的,插件作者让找官方反馈

回复 8***@qq.com: 小米的什么机型和版本,我们这里的小米没问题

回复 DCloud_heavensoft: 我是小米MIX2

回复 8***@qq.com: Android版本????

回复 DCloud_heavensoft: MIUI 9.8.3.15,安卓8.0

回复 DCloud_heavensoft: 安卓9

回复 DCloud_heavensoft: 插件市场那个我这安卓9也划不动 小米8se

回复 Hane:小米mix2s也滑不动。

回复 DCloud_heavensoft: 这个问题有修复吗?应该是swipper的问题,作者新发布的CSS3的就可以用

频繁的操作DOM。体验不会太好的,app的话看看能不能嵌入Weex实现吧

回复 8***@qq.com: 这个是屏幕适配的问题。DCloud_Android_zl 已经回复了。

回复 DCloud_heavensoft: 666,问题确实解决了

回复 8***@qq.com: 我这里使用还是不行啊,向下滑可以,向上划还是不灵敏

回复 8***@qq.com: 请问怎么解决的,我的三星手机上下滑动很不灵

简单实现,触摸滑动前记录touchstart位置(Y轴位置,以下皆是),滑动后拿touchend位置与touchstart记录的位置比较,增加换前一个视频地址,减少换后一个视频地址

ios不生效的

建议通过flex设置占满父元素 .page{
flex: 1;
}
.swiper{
flex: 1;
background-color: #000;
}

不行呀,我用的是swiper版的,加上还是那样上下划掉需要垂直90度滑才可以。 头疼~

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

就是基本的video+list组合,使用list上下滑动性能肯定没问题,但是反而上下滑动的时候封面图就不能很好的展示了因为list会不渲染界面外的dom

实现uni-app仿抖音首页视频滑动功能,可以利用uni-app提供的swiper组件来实现水平滑动效果。以下是一个简单的代码示例,展示了如何使用swiper组件来实现这一功能。

首先,确保你的uni-app项目已经创建并配置好。

  1. pages/index/index.vue文件中编写以下代码
<template>
  <view class="container">
    <swiper
      class="swiper-container"
      indicator-dots="true"
      autoplay="false"
      interval="3000"
      duration="500"
      circular="true"
      current="{{currentIndex}}"
      bindchange="swiperChange"
    >
      <block v-for="(video, index) in videoList" :key="index">
        <swiper-item>
          <view class="swiper-item">
            <image class="video-cover" :src="video.cover" mode="aspectFill"></image>
            <!-- 可以在这里添加播放按钮等其他元素 -->
          </view>
        </swiper-item>
      </block>
    </swiper>
  </view>
</template>

<script>
export default {
  data() {
    return {
      currentIndex: 0,
      videoList: [
        { cover: 'https://example.com/video1.jpg' },
        { cover: 'https://example.com/video2.jpg' },
        { cover: 'https://example.com/video3.jpg' },
        // 添加更多视频封面链接
      ],
    };
  },
  methods: {
    swiperChange(e) {
      this.currentIndex = e.detail.current;
      // 可以在这里添加视频播放逻辑
    },
  },
};
</script>

<style>
.container {
  width: 100%;
  height: 100%;
}
.swiper-container {
  width: 100%;
  height: 100%;
}
.swiper-item {
  display: flex;
  justify-content: center;
  align-items: center;
}
.video-cover {
  width: 100%;
  height: 100%;
}
</style>
  1. 解释代码
  • swiper组件用于实现滑动效果,indicator-dots属性用于显示指示点,autoplayintervalduration属性用于控制自动播放行为,circular属性用于实现循环滑动。
  • v-for指令用于循环渲染视频封面,每个封面作为一个swiper-item
  • swiperChange方法用于处理滑动事件,可以在这里添加视频播放逻辑(例如,根据当前索引播放对应视频)。
  • 样式部分定义了容器、滑动容器和视频封面的样式,确保视频封面能够正确显示并占满整个滑动项。

这个示例展示了如何使用swiper组件来实现基本的视频封面滑动效果。你可以根据实际需求进一步扩展功能,例如添加视频播放按钮、处理视频播放逻辑等。

回到顶部