uniapp中video层级太高(或者在页面中不跟随页面滚动)解决方案
创始人
2024-04-26 09:43:38
0

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

问题描述

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

问题原因

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

官方解决方案

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

解决方案

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

// html 部分
// js 部分videoHtml(videoUrl, poster) {return ``;},

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

总结

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

补充

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

相关内容

热门资讯

原创 5... 特朗普到底想干什么?最近这个问题开始像影子一样困扰着人,让人夜里翻来覆去难以入眠。他的动作,已经完全...
制度优化与资金格局有望共筑慢牛... 1月14日,经中国证监会批准,沪深北交易所发布通知调整融资保证金比例,将投资者融资买入证券时的融资保...
迅雷起诉前CEO“贪腐2亿掏空... 央广网北京1月15日消息(记者 孙文轩)1月15日,有消息称迅雷已正式起诉前CEO陈磊,指控其侵害公...
传承岐黄文化 《郑州市中医药发... 大象新闻记者 池里军 曹东方 1 月 15日,郑州市召开《郑州市中医药发展促进条例》(以下简称《条例...
重磅利好政策来袭!智能驾驶概念... 1月15日,受政策利好驱动,智能驾驶概念股活跃。 在港股市场,截至发稿前,浙江世宝(01057.HK...
以法治守护自然 贵州多措并举推... 1月15日,记者从《贵州省野生动物保护条例》政策解读新闻发布会上获悉,贵州将重点从全面开展宣传解读、...
广西供销合作联社严正声明:已发... 1月13日,有自媒体发文称广西壮族自治区供销合作联社内部存在一小撮违法团伙,对某企业实施欺压,引发网...
依托乐城先行区政策优势 博鳌乐... 在《“健康中国2030”规划纲要》明确将高端医疗装备与前沿医疗技术创新列为国家重点突破方向的政策背景...