0

0

uni-app横竖屏切换 uni-app如何设置和监听屏幕旋转

畫卷琴夢

畫卷琴夢

发布时间:2026-03-16 21:47:31

|

270人浏览过

|

来源于php中文网

原创

uni-app横竖屏配置需按平台区分:manifest.json的screenOrientation仅App生效,pages.json的pageOrientation仅小程序和App部分生效,H5需用uni.onWindowResize监听并配合CSS媒体查询。

uni-app横竖屏切换 uni-app如何设置和监听屏幕旋转

manifest.json 和 pages.json 配置不生效?先看平台限制

uni-app 的横竖屏控制不是“写完就通”,不同端走的是完全不同的机制,配置错地方或跨端误用是第一大坑。

  • manifest.json 中的 screenOrientation 只对 App端 生效,H5 和小程序压根不读这个字段
  • pages.json 里的 pageOrientation 是页面级开关,但仅在小程序(如微信)和 App 端部分生效;H5 完全无视它
  • 微信小程序必须 同时pages.json(页面 style)和 manifest.jsonmp-weixin.settings.screenOrientation)里声明方向,缺一不可
  • App 端若只配了 manifest.json 却没在 pages.json 指定某页为 landscape,那该页仍可能被系统强制竖屏(尤其 iOS)

plus.screen.lockOrientation 在 H5 或小程序里报错?检查条件编译

这个 API 是 App端 原生能力,其他平台调用会直接抛 undefined is not a function 或静默失败。

  • 必须用 #ifdef APP-PLUS 包裹,否则 H5 构建时会报错,小程序运行时报 plus is not defined
  • 锁定后不 unlockOrientation(),退出页面时方向会被卡住——下次进其他页也可能横着显示
  • 不要在 onLoad 立即锁,加 setTimeout(..., 300) 更稳:iOS 启动动画未结束时锁方向易失效
  • 别用 landscape 这种简写,必须用标准值:landscape-primary(home 键在右)或 landscape-secondary(home 键在左)

监听屏幕旋转总收不到回调?优先用 uni.onWindowResize

uni.onWindowResize 是目前最通用、跨端可用的方向变化监听方式,比监听 orientationchangeresize 更可靠。

会译·对照式翻译
会译·对照式翻译

会译是一款AI智能翻译浏览器插件,支持多语种对照式翻译

下载
  • 它返回的是 windowWidthwindowHeight,判断逻辑简单:windowWidth > windowHeight ≈ 横屏(注意:不是 100% 等价于设备 orientation,但对 UI 布局足够)
  • H5 端可额外监听 window.addEventListener('resize'),但需手动 off,否则内存泄漏;uni.onWindowResize 的回调必须在 onUnload 里用 uni.offWindowResize 清理
  • 不要依赖 screen.orientation.type —— H5 兼容性差,iOS Safari 不支持,微信小程序也不暴露该对象
  • 监听到变化后,避免直接操作 DOM;推荐用 setData 或响应式变量触发 @media (orientation: landscape) 样式切换

横屏时布局错乱、文字缩成一团?慎用 rpx + 检查 CSS 媒体查询范围

rpx 在横屏下按宽度等比缩放,但高度没变,容易导致“宽高比例崩坏”;而媒体查询若没写全,也会漏掉关键断点。

  • 视频页、图表页等强横屏场景,建议放弃 rpx,改用 vw/vh% + flex 布局
  • @media (orientation: landscape) 只检测设备方向,不保证窗口尺寸;真要适配宽高比,得补上 @media (min-aspect-ratio: 16/9) 这类规则
  • H5 模拟横屏(用 transform: rotate(90deg))时,务必加 overflow: hidden 到 body,否则出现双滚动条或内容溢出
  • App 端横屏后,statusBar 高度逻辑可能错位,需在锁方向后手动调用 plus.navigator.getStatusBarHeight() 重算
实际项目里最常被忽略的,是「离开横屏页后方向没恢复」和「H5 用 transform 旋转却忘了重设 viewport」。这两个点不出问题则已,一出就是整页白屏或交互失灵。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

458

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

549

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

83

2025.09.10

undefined是什么
undefined是什么

undefined是代表一个值或变量不存在或未定义的状态。它可以作为默认值来判断一个变量是否已经被赋值,也可以用于设置默认参数值。尽管在不同的编程语言中,undefined可能具有不同的含义和用法,但理解undefined的概念可以帮助我们更好地理解和编写程序。本专题为大家提供undefined相关的各种文章、以及下载和课程。

6585

2023.07.31

网页undefined是什么意思
网页undefined是什么意思

网页undefined是指页面出现了未知错误的意思,提示undefined一般是在开发网站的时候定义不正确或是转换不正确,或是找不到定义才会提示undefined未定义这个错误。想了解更多的相关内容,可以阅读本专题下面的文章。

3352

2024.08.14

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

1706

2025.12.25

function是什么
function是什么

function是函数的意思,是一段具有特定功能的可重复使用的代码块,是程序的基本组成单元之一,可以接受输入参数,执行特定的操作,并返回结果。本专题为大家提供function是什么的相关的文章、下载、课程内容,供大家免费下载体验。

500

2023.08.04

chatgpt使用指南
chatgpt使用指南

本专题整合了chatgpt使用教程、新手使用说明等等相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号