uniapp 横屏开发页面配置(仅支持App、H5)

1、pages.json页配置页面大小

在uniapp官网中提到了pages.json页面对于横屏页面单位的配置

参考官网这篇详解 https://uniapp.dcloud.net.cn/adapt

由于我开发的横屏项目的横屏设计图分辨率以及硬件分辨率是1280*800,所以我的页面配置是

"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "***",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8",
		"navigationStyle": "custom",
		"rpxCalcMaxDeviceWidth": 2560, // rpx 计算所支持的最大设备宽度,单位 px,默认值为 960
		"rpxCalcBaseDeviceWidth": 1280, // rpx 计算使用的基准设备宽度,设备实际宽度超出 rpx 计算所支持的最大设备宽度时将按基准宽度计算,单位 px,默认值为 375
		"rpxCalcIncludeWidth": 2560, // rpx 计算特殊处理的值,始终按实际的设备宽度计算,单位 rpx,默认值为 750
		"app-plus": {
			"titleView": false
		}
	}

重点是这四行:

"navigationStyle": "custom",//设置横屏
		"rpxCalcMaxDeviceWidth": 2560, // rpx 计算所支持的最大设备宽度,单位 px,默认值为 960
		"rpxCalcBaseDeviceWidth": 1280, // rpx 计算使用的基准设备宽度,设备实际宽度超出 rpx 计算所支持的最大设备宽度时将按基准宽度计算,单位 px,默认值为 375
		"rpxCalcIncludeWidth": 2560, // rpx 计算特殊处理的值,始终按实际的设备宽度计算,单位 rpx,默认值为 750

2、manifest.json文件修改

打开manifest.json文件,如图:

在源码视图的"app-plus"里添加子项

"orientation" : [ "landscape-primary" ],

 3、App.vue文件配置

在App端,还需要在onLaunch生命周期函数中添加:

// #ifdef APP-PLUS
plus.screen.lockOrientation('landscape-primary'); //锁定横屏
plus.navigator.setFullscreen(true); //隐藏状态栏(应用全屏:只能隐藏状态栏,标题栏和虚拟返回键都还可以显示)		
// #endif

 4、配置单位提示

在编译器中,点击工具,弹出一个界面,如图:

点击编译器配置,进入当前页面,找到当前项,如图:

 

 重点在px转rpx/upx比例这里,需要用你当前的设计稿大小,单位是px,出除以750,得到的就是转化的比例。在设置保留几位小数就好了

开发中,输入设计稿的单位便会自动转换,如图

### 实现 H5 平台 UniApp 应用的横屏显示 对于 H5 平台上 UniApp 应用的横屏支持,由于浏览器本身并不像原生应用那样提供直接的屏幕方向锁定功能[^1]。因此,为了实现在 H5 中强制横屏的效果,通常采用监听窗口大小变化并旋转页面内容的方式。 #### 使用 CSS 和 JavaScript 结合实现自动横屏效果 通过检测设备的方向来动态调整网页布局是一个常见做法。下面是一段用于尝试模拟横屏体验的代码: ```javascript // 判断当前环境是否为H5平台 if (process.env.VUE_APP_PLATFORM === 'h5') { let timeoutId; function handleOrientationChange() { clearTimeout(timeoutId); const isLandscape = window.innerHeight < window.innerWidth; document.body.style.transform = isLandscape ? '' : 'rotate(90deg)'; document.body.style.width = isLandscape ? '' : `${window.innerHeight}px`; document.body.style.height = isLandscape ? '' : `${window.innerWidth}px`; // 延迟执行以确保样式已更新 timeoutId = setTimeout(() => { if (!isLandscape) { document.documentElement.scrollLeft = (document.documentElement.scrollHeight - document.documentElement.clientHeight) / 2; document.documentElement.scrollTop = -(document.documentElement.scrollWidth - document.documentElement.clientWidth) / 2; } }, 0); } window.addEventListener('resize', handleOrientationChange); // 初始化调用一次处理初始状态 handleOrientationChange(); } ``` 这段脚本会在页面加载时以及每次窗口尺寸发生变化时检查宽高比例,并据此决定是否应该将整个页面顺时针或逆时针旋转90度来模仿横屏视图。 需要注意的是这种方法只是视觉上改变了页面展示方式,并不会真正改变物理屏幕的方向;而且不同浏览器可能对此类操作的支持程度有所差异,所以在实际开发过程中还需要做充分测试以保证兼容性和用户体验。 另外,考虑到某些情况下用户可能会手动切换回竖直模式,建议加入提示信息告知用户最佳观看角度,并允许他们自行选择是否保持特定方向查看[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值