移动端H5,安卓全屏并横屏

1,209 阅读2分钟

ios端只能通过引导开启旋转屏幕!

有些项目需要在横屏状态下展示页面,然而js没有控制设备横屏的api,h5项目想要横屏效果可以通过css3的transform旋转实现,这个百度一下就有了。

重点来了

<view class="full-screen" v-if="isAndroid&&iS_FullScreen">
	<button @click="FullScreen">点击全屏游玩</button>
</view>
<view class="proxyFullScreen" v-if="isAndroid&&iS_FullScreen">
	<video muted ref="proxyFullScreen"
		src="这里放个.mp4文件,你懂吧?"></video>
</view>
    <script setup> //能看懂吧
        const iS_FullScreen = ref(true)
        function FullScreen() {
               // iS_FullScreen.value = false 这个在开启全屏前通过v-if销毁video标签,有些不是很流畅的手机没法横屏,实测一些红米手机试过。也不要想着延迟销毁,比较流畅的手机会退出横屏,实测iq这个专门打游戏的手机就会。
                openFullscreen()
        }
        // 开启全屏
        function openFullscreen() {
                let elem = document.documentElement;
                if (elem.requestFullscreen) {
                        elem.requestFullscreen();

                } else if (elem.mozRequestFullScreen) {
                        /* Firefox */
                        elem.mozRequestFullScreen();

                } else if (elem.webkitRequestFullscreen) {
                        /* Chrome, Safari and Opera */

                        elem.webkitRequestFullscreen();
                } else if (elem.msRequestFullscreen) {
                        /* IE/Edge */
                        elem.msRequestFullscreen();
                }
                iS_FullScreen.value = false//这里倒是是可以
        }
    </script>
    

video标签有个全屏播放的效果,全屏播放还可以实现横屏(反正就是设备状态栏发生改变了),如果没有video标签的效果就是只能实现全屏,没有横屏。这里的狗屁原理没去深究。我估计是elem.requestFullscreen()的时候开启的的video的全屏。 cv工程师看这句话我推测是依据是:src="这里放个.mp4文件,你懂吧?"放是视频是竖屏录的就不会发生横屏转换,而横屏录的视频时开启全屏会自动发生横屏。

在安卓中使用这样的方法更像是卡bug,在借用video开启横屏的瞬间把video销毁。经测试部分浏览器是无效的:华为自带浏览器,小米自带浏览器。其他的浏览器也行,在微信里也可以。

下一个开发问题关于ios调起微信支付强行锁竖屏还有些没研究明白留着下一篇吧