uniapp中video层级太高(或者在页面中不跟随页面滚动)解决方案

我觉得这个问题有必要记录一下。最近项目中遇到的问题:项目是uniapp开发,有一个商品详情的页面和一个视频竖向轮播的页面。

问题描述

1、商品详情页上面是图片轮播(包含视频),下面是商品详情,当页面上下滑动时,如果当前轮播是视频,那么视频就会停留在原位置 不会跟随页面滚动,小程序端是正常的,app端会出现这个问题。
2、视频竖向轮播的页面 (类似抖音) 上下滑动切换视频,视频上面有一些内容(返回按钮、视频标题、视频介绍等等),但是在app端 视频会把这些内容都覆盖掉,显示不出来。小程序端是正常的。

问题原因

是因为 video 在app端为原生组件,原生组件层级太高 其他的组件盖不住它 用z-index也不管用!

官方解决方案

uni官方文档给了三种方法,一般网上查的也是这三种方法:
1、使用 cover-view 组件
2、新建 nvue 页面
在这里插入图片描述
3、使用 使用subNvue子窗体。
在这里插入图片描述
但是并不适用我目前的场景。

解决方案

把 video 组件 做成富文本内容解析出来。mp-html 富文本组件,插件市场可以下载。

// html 部分
 <mp-html ref="article" id="_root" :content="videoHtml(videoItem.contentMainImg, videoItem.videoPoster)" />
// js 部分
 videoHtml(videoUrl, poster) {
     return `<video class="video" poster="${poster}" src="${videoUrl}" :loop="${true}" :autoplay="${true}" object-fit="fill" style="width:100%;height:100%"></video>`;
 },

注意:video 富文本内容 需要加上封面参数,要不可能会出现 视频黑屏 加载不出来等问题。

总结

这个方法能适用一部分场景,但是也有不足:添加了封面参数的话,就会添加上视频的默认控件;不好监听视频的播放与暂停。。。

补充

如果用这种方法处理了,然后需求中又有需要操作视频(比如点击视频 暂停/播放 等) , 把 video 组件做成富文本内容了,然后uni的video方法好像就不能用了。这时候可以尝试选择直接操作 dom 元素,直接操作dom的话,使用 uni.createSelectorQuery() 可以选择到 富文本 video, 但是使用不了video的方法。但是uni又没有 document 对象,这时候可以尝试使用renderjs来选择和操作dom,在 renderjs 中 可以使用 document 对象。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
uniapp,使用video组件来实现视频播放是常见的做法。根据引用\[1\],在优化bug之后,可能仍然会遇到一些问题。如果你对此有任何见解,可以和其他人一起探讨。另外,如果你有自定义进度条的需求,可以编写一个自定义的video播放器。然而,目前uniapp插件还没有提供这方面的实例。 根据引用\[2\],在子组件的js,可以通过mounted或created钩子函数来获取video组件的id,并使用uni.createVideoContext方法来获取video对象。可以通过监听传递过来的参数来判断视频的播放与暂停状态。在playVideo方法,可以使用this.video.play()来播放视频。 根据引用\[3\],在开发基于H5运行的视频学习平台时,可能会遇到一些坑。如果你使用过uniapp开发video组件,可能也会遇到一些问题。希望以上信息对你有所帮助。 #### 引用[.reference_title] - *1* *3* [uniappvideo避坑指南(H5、小程序、app)](https://blog.csdn.net/weixin_64974600/article/details/125817257)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [uniapp实现视频上下滑动功能(小程序)以及video组件的暂停和播放](https://blog.csdn.net/weixin_46447120/article/details/121531294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值