uniapp小白,模仿抖音首页的刷视频功能,

uniapp插件市场有很多,但是爱好摸鱼的我,也想试一试其他方法

上面是效果图(样式比较潦草,没有仔细写)

一开始想得比较简单,上下滑动的效果用uni内置的swiper组件即可实现,然后就开始干了如下

<template><view><swiper :vertical="true" class="box"><swiper-item v-for="it in swiperList" :key="it.id" class="spitem"><video :src="it.mp4" autoplay/></swiper-item></swiper></view>
</template>

h5端浏览器上看,感觉自己以及结束了实现了刷视频的简单效果,

结果真机调试出现了匪夷所思的问题(视频一直卡在屏幕中间,并没有跟着swiper-item去滑动)

也查了很多文,才知道video和map等控件属于原生控件,渲染时会高于前端组件(z-index也无济于事),webview以及cover-view等方法也尝试了一些,但是不太好使。

最后通过nvue才解决自己的问题,

关于nvew和vue的解释可以参考https://blog.csdn.net/weixin_53853031/article/details/125416839

简单说就是nvue 走 weex 渲染,uni-app 集成了 weex 的 SDK,也就实现了 App 端的原生渲染能力。将前端组件当原生组件去渲染,解决了前端控件优先级低于原生控件的问题

html代码

<template><view><swiper :vertical="true" class="box" :style="`height: ${hw.height}px;;`"><swiper-item v-for="it in swiperList" :key="it.id" class="spitem"><view class="bg-video" :style="`width:${hw.width}px;height:${hw.height}px`"><video class="vdplayer" :id="'vdplayer' + it.id" :ref="'vdplayer' + it.id" :src="it.mp4":controls="false" :duration="1000" :loop="true" :show-center-play-btn="true"object-fit="contain" autoplay :style="`width:${hw.width}px;height:${hw.height}px;`" /><view class="right_menu" :style="`top:${hw.height/2}px`"><image :src="it.imgSrc" class="user_hp" /><view @click="beFondOfClick(it)" class="imgBox"><image class="spitemImage" src="@/static/image/d1.png" v-if="!it.beFondOf" /><image class="spitemImage" src="@/static/image/d2.png" v-if="it.beFondOf" /><view><text class="rtext">点赞</text></view></view><view class="imgBox"><image class="spitemImage" src="@/static/image/pl.png" /><view><text class="rtext">评论</text></view></view><view class="imgBox"><image class="spitemImage" src="@/static/image/zf.png" /><view><text class="rtext">转发</text></view></view></view><view class="bottom_info" :style="`bottom:${hw.height/6};width:${hw.width/2}`"><view><text class="user_name">{{it.user_name}}</text></view><view><text class="video_introduce">{{it.video_introduce}}</text></view></view></view></swiper-item></swiper></view>
</template>

js代码

因为nvue的渲染问题,百分比和vh、vw等部分css不会生效,所以页面加载的时候获取了屏幕宽高,去计算宽高布局

export default {data() {return {hw: {width: 0,height: 0},swiperList: [{id: 1,mp4: 'https://cdn.uviewui.com/uview/resources/video.mp4',imgSrc:'../../static/image/logo.png',user_name:'uni-app',video_introduce:'一段视频简介,一段视频简介,一段视频简介,一段视频简介,一段视频简介',beFondOf: false}, {id: 2,mp4: 'http://vcdnb.huoying666.com/new_video/2022/0725/b94a235358c31668dc99e7cff9fe5e9c/v1080/b94a235351_6921661_fhd.mp4',imgSrc:'../../static/image/qsLoc.png',user_name:'骑手小杨',video_introduce:'一段视频简介,一段视频简介',beFondOf: false}, {id: 3,mp4: 'http://vcdnb.huoying666.com/new_video/2020/1211/9d0b01c88bd05721f9de88122de72db1/v1080/9d0b01c881_5872976_fhd.mp4',imgSrc:'../../static/image/wdLoc.png',user_name:'无敌风火轮',video_introduce:'一段视频简介,一段视频简介,一段视频简介,一段视频简介',beFondOf: false}, {id: 4,mp4: 'http://vcdnb.huoying666.com/new_video/2021/1109/6f5610c304083ca59141c8f70aca6396/v720/6f5610c301_6578243_hd.mp4',imgSrc:'../../static/tabbar/shopping_trolley2.png',user_name:'购物狂魔',video_introduce:'一段视频简介,一段视频简介,一段视频简介',beFondOf: false}]}},onLoad() {let screenWidth = uni.getSystemInfoSync().screenWidthlet screenHeight = uni.getSystemInfoSync().screenHeightthis.hw = {width: screenWidth,height: screenHeight}},onShow() {},methods: {beFondOfClick(it) {it.beFondOf = !it.beFondOf}}}

css代码

<style lang="scss" scoped>.box {background-color: #333;text-align: center;}.bg-video {background-color: #333;}.right_menu {position: absolute;right: 30rpx;z-index: 990;.user_hp {margin-bottom: 30rpx;width: 50px;height: 50px;border: 2px solid #ffffff;background-color: #fff;border-radius: 50%;}.imgBox {display: flex;align-items: center;.spitemImage {width: 60rpx;height: 60rpx;}.rtext {text-align: center;color: #ffffff;font-size: 24rpx;margin-top: 10rpx;margin-bottom: 30rpx;}}}.bottom_info{position: absolute;left: 30rpx;z-index: 990;.user_name{font-size: 40rpx;font-weight: bold;color:#ffffff;margin-bottom: 20rpx;}.video_introduce{font-size: 28rpx;color:#ffffff;}}
</style>

感觉性能不是很好,有需要可以借鉴,大佬有更好的办法也可以指导指导

学习uniapp 在App端模仿抖音刷视频效果相关推荐

  1. 整合vite2.0+electron12+vant3.x跨端仿抖音短视频+聊天+直播exe应用

    vite2-electron-douyin 基于vite2.x+electron模仿抖音短视频应用实例. 整合了vite2+electron跨端开发技术仿制抖音界面桌面版exe应用软件.基于Vite2 ...

  2. 分享一个抖音刷视频的python代码

    前一段时间总是给我推送抖音刷视频的广告,有点好奇就下了个,确实是能刷到点现金,但是也不喜欢看小视频,就在网上找攻略怎么用python刷视频,代码如下: import os import timeb = ...

  3. 微信小程序实现抖音切换视频效果

    微信小程序实现抖音切换视频效果 思路: 使用微信小程序的swiper组件,使其竖向滑动 分页加载,每次加载3个视频,当滑动到只剩1个视频时加载下一页 问题: 加载多个视频时,多个视频会同时播放 效果图 ...

  4. 鸿蒙视频app官网,抖音短视频鸿蒙版App最新版

    抖音短视频鸿蒙版是一款全新的短视频欣赏平台,全新的播放模式和社交功能,让用户不仅可以每天看到精彩的视频内容,还可以结识到更多好朋友,互动交流都是非常开心的,更多全新的体验功能等待大家来发现,为你展现不 ...

  5. ViewPager2 +Fragment 模仿抖音短视频

    项目demo: https://download.csdn.net/download/BirdEatBug/19033060 无需积分 一.工程所依赖的库 1.播放器:IjkPlayer(哔哩哔哩开源 ...

  6. Flutter为自己的App中引入抖音短视频

    最近字节开放了内容输出SDK,可以直接在应用中插入小说.视频内容.Flutter可以通过flutter_pangrowth插件,快速.无侵入的引入短视频到自己的APP中. 体验demo 仓库地址 集成 ...

  7. uniapp 在app端使用nvue来解决视频层级过高

    1.在pagejson中申明nvue {"path": "pages/detail/detail","style": {"navi ...

  8. rn 实现上下滑动选择列表_RN-实现抖音切换视频效果

    实现效果 1.上下滑动切换 2. 左滑动弹出列表,右滑动取消列表 3.加载更多.刷新 实现效果 思路 通过滑动的x.y判断是上下滑动还是左右滑动 1.上下滑动 滑动中:通过 flatList.scro ...

  9. 基于Uni-APP多端「h5+小程序+App」高仿抖音小视频|直播|聊天实例

    uni-ttLive 基于uni-app+uView-ui跨端开发短视频+直播聊天实例. 全新研发的一款多端仿制抖音短视频+直播+聊天项目,基于uniApp+Vue.js+Vuex+Nvue+uVie ...

最新文章

  1. 卫星对于物联网来说是一个非常好的选择
  2. 如何编译 Linux 内核
  3. 滤镜应用——制作彩虹效果
  4. 检查邮箱是否包含教育后缀.edu结尾的邮箱
  5. 毕业论文 | 基于MPU6050及卡尔曼滤波的平衡小车设计(源代码与设计文档)
  6. python的常量和变量_python变量和常量
  7. LeetCode MySQL 1623. 三人国家代表队
  8. 国产机器人销售增涨 安防市场有待挖掘
  9. 骁龙845手机破罐子破摔!小米8最惨降价:直降1200
  10. caffe目录结构 及 caffe源码文件说明
  11. Andorid性能优化之traceview的使用(不懂揍我)
  12. linux游戏主机,Steam OS界面介绍
  13. 【接口测试实战(三)】接口测试用例的编写
  14. 计算机室内设计cad实践报告,室内设计师助理实习报告范文
  15. 企业软文推广应该怎么做,软文写作指导
  16. 无线数字DR平板探测器维修瓦里安PaxScan 4030X分析
  17. IPv4与IPv6之间的区别
  18. python nlp文本摘要实现_用TextRank算法实现自动文本摘要
  19. NRF51822 小黄车智能锁 逆向工程
  20. vue父子组件赋值操作时报错Avoid mutating a prop directly since the value will be overwritten whenever

热门文章

  1. 32岁入门的70后程序员的传奇故事,他,只有初中文化
  2. python for if
  3. 一看就懂:华为ensp网络地址转换(NAT)原理和配置!
  4. 分享CAD高低版本间的转换方式
  5. Linux之用户高级管理
  6. Unity手柄UI设计
  7. SAP Basis来由
  8. Adobe PDF 虚拟打印失败的解决方案
  9. 用java编写五子棋制作流程_Java实现五子棋的基础方法
  10. 29岁vivo员工吐槽:学java笔记本配置