uniapp video视频全屏播放后退出,页面字体变大,样式混乱问题

uniapp官方的说法是因为页面使用rpx,但是全屏和退出全屏自动计算屏幕尺寸不支持rpx,建议使用px。

但是因为uniapp端的开发都是使用rpx作为屏幕尺寸计算参数,不可能因为video全屏播放功能就整个全部修改,工作量大,耗时耗力。

所以就有了下面的解决方法。

我的方式是:通过创建空白页面过渡。

1.新建blank.vue页面:

javascript 复制代码
<template>
	<!-- 此空白页面用于处理视频全屏退出后页面样式混乱 -->
	<view>
	</view>
</template>

<script>
	export default {
		data() {
			return {}
		},
		methods: {},

		onLoad() {
			// #ifdef APP-PLUS
			plus.screen.unlockOrientation(); //解除屏幕方向的锁定,但是不一定是竖屏;
			plus.screen.lockOrientation('portrait'); //锁死屏幕方向为竖屏
			// #endif
			setTimeout(() => {
				uni.navigateBack({
					delta: 1
				})
			}, 30)
		},
	}
</script>

<style>

</style>

2.video标签监听全屏事件:

javascript 复制代码
<video id="videoId" ref="playVideo" :src="encodeURI(getVideo(resourceId))" controls autoplay
			@timeupdate="updateTime" @play="playToVideo" @fullscreenchange="screenChange">
		</video>
  1. method方法中监听退出全屏事件,如果退出,跳转上述空白页面。
javascript 复制代码
    methods: {
			screenChange(e) {
				//视频全屏退出后页面样式混乱,跳转空白页处理后再返回本页
				// #ifdef APP-PLUS
				if (!e.target.fullScreen) {
					uni.navigateTo({
						url: '/subpages/multimedia/blank',
						animationType: 'none',
						animationDuration: 0
					})
				}
				// #endif
			}
    }

4.在空白页面中切换为竖屏后再返回video所在页面。这时候rpx参数重新计算,不会污染页面样式。

5.效果:

相关推荐
竹林81840 分钟前
把神经网络塞进一个浏览器标签页:端侧视觉 AI 的工程真相
前端·浏览器
乘风gg1 小时前
别跟风 AI 副业,工程师最该学的是 AI Coding
前端·ai编程·claude
Frag0ut1 小时前
深度解析:Chrome 自启动与后台常驻服务的作用、关闭方法及利弊权衡
前端·chrome
OpsEye1 小时前
当企业不再只关心能不能调用模型,而是关心值不值得调用
javascript·ai编程
Amos_Web1 小时前
Rspack 源码解析(十五):Loader Runner 与 JS Loader 桥接
前端·rust·前端框架
YIAN1 小时前
从 SSE 流式到结构化输出:LangChain 三大 OutputParser 与 ToolCall 方案全实战
前端·langchain·node.js
FYKJ_20102 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
javascript·vue.js·spring boot·mysql·typescript·spark·express
YIAN2 小时前
从 SSE 流式原理到 LangChain 结构化输出:打字机效果与 JSON 解析全方案实战
前端·langchain
Moment2 小时前
如果你在做 RAG,可能会需要 pdf-inspector
前端·后端·面试
gnip2 小时前
Flutter 原生插件开发实战指南
前端·flutter