uni-app 安卓app nvue页面横屏播放点击暂停后视频内容填充整个页面

uni-app 安卓app nvue页面横屏播放点击暂停后视频内容填充整个页面

示例代码:

object-fit="contain" video中设置了该属性

操作步骤:

仅是播放组件问题,无法直接通过粘贴代码复现

预期结果:

点击播放暂停按钮,视频画面不发生改变

实际结果:

点击播放暂停按钮,视频画面发生填充显示界面的情况

bug描述:

nvue页面横屏播放点击暂停,视频内容会填充整个页面

https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20210902/ede6c4d09c22865a0b6b2b242fdea4e5.jpg

https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20210902/fa6d48b6a251e1f70a5029dde17e326f.jpg


更多关于uni-app 安卓app nvue页面横屏播放点击暂停后视频内容填充整个页面的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

相关帖子:https://ask.dcloud.net.cn/question/125783 用最新版本alpha试试,是否还有此问题

更多关于uni-app 安卓app nvue页面横屏播放点击暂停后视频内容填充整个页面的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个已知的 nvue video 组件在 Android 平台上的渲染问题。当视频处于横屏模式并暂停时,object-fit="contain" 属性可能会失效,导致视频画面拉伸填充整个容器。

问题核心:nvue 的 video 组件在 Android 上,视频播放状态改变(尤其是从播放到暂停)时,其底层渲染引擎可能没有正确重新应用 CSS 的 object-fit 样式。

临时解决方案

  1. 强制重绘:在视频的 @pause 事件触发时,尝试通过轻微改变容器的样式(如宽度或高度)来触发重绘。这通常能迫使渲染引擎重新计算并应用 object-fit
    // 在 pause 事件处理函数中
    handlePause(e) {
        // 获取视频容器元素的引用,假设其 ref 为 'videoContainer'
        const container = this.$refs.videoContainer;
        // 轻微调整宽度(例如增加0.1px,然后立即恢复),触发重排/重绘
        if (container) {
            // 注意:在 nvue 中直接操作 DOM 样式可能受限,此方法不一定总是有效。
            // 更可靠的方法是控制一个绑定到样式的 data 变量。
        }
    }
回到顶部