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.效果:

相关推荐
IT_陈寒10 分钟前
Python性能翻倍的5个冷门技巧:从GIL逃逸到内存视图的实战优化指南
前端·人工智能·后端
南城巷陌15 分钟前
错误边界:用componentDidCatch筑起React崩溃防火墙
前端·react.js·前端框架
FinClip20 分钟前
OpenAI推出Apps SDK,你的企业App跟上了吗?
前端·app·openai
馨谙25 分钟前
Linux中的管道与重定向:深入理解两者的本质区别
前端·chrome
2501_9159214329 分钟前
iOS 应用加固与苹果软件混淆全解析 IPA 文件防反编译、混淆加密与无源码加固策略
android·macos·ios·小程序·uni-app·cocoa·iphone
Rhys..31 分钟前
JS - npm init
开发语言·javascript·npm
夏天想34 分钟前
复制了一个vue的项目然后再这个基础上修改。可是通过npm run dev运行之前的老项目,发现运行的竟然是拷贝后的项目。为什么会这样?
前端·vue.js·npm
@大迁世界40 分钟前
这个 CSS 特性,可能终结样式冲突
前端·css
zzzsde1 小时前
【C++】深入理解string类(5)
java·前端·算法
袁煦丞1 小时前
随机菜谱解救选择困难!YunYouJun/cook 成为你的厨房锦囊:cpolar内网穿透实验室第549个成功挑战
前端·程序员·远程工作