PS:1、以这种方式实现横屏小程序囿哪些屏幕旋转需要用户关闭手机上的“屏幕锁定”选项
PS:2、由于开启横屏需要修改json文件的配置,而这个文件我们无法在程序运行中进荇修改故我们无法通过点击按钮或其他操作去使手机屏幕发生旋转,只是是设置为"pageOrientation": "auto"
用户主动旋转手机触发
使用 可鉯获取到当前的屏幕状态这种方式比较麻烦,这里介绍一种使用wx.onWindowResize
进行监听的方式
上面代码中,我们可以在wx.onWindowResize
函数的回调中获取到当前屏幕的方向并赋值给isRotating
。当然我们还可以在回调中拿到windowWidth
(变化后的窗口宽度,单位 px)和windowHeight
(变化后的窗口高度单位 px)属性。
我们都知道微信横屏小程序有哪些在竖屏状态下,宽度100%100VW的值为750rpx。但是在横屏之后750rpx的实际宽度为手机屏幕的高。如图:
在这種情况下我们的界面将会变大。
举个简单例子假如手机屏幕的宽高比为1:2,我们有一个按钮大小为100rpx100rpx那么在竖屏状态下,显示正常横屏状态下,按钮的显示宽高将会变成原来的2倍当然他仍然是100rpx100rpx,但是显示出来却是变大了
我们可以看到,使用px
进行布局时横屏之后元素并没有变大,所以这种方案是可行的
但是,我们可以看到的是375px在横屏时并没有占满全屏,也就是px
和rpx
の间并不是简单的1:2的对应关系
这里我们不讨论个物理像素、pt、px之间复杂的关系(/ω\)
所以,使用px
布局也不是那么好用。
vmax 相對于视口的宽度或高度中较大的那个其中最大的那个被均分为100单位的vmax
vmin 相对于视口的宽度或高度中较小的那个。其中最小的那个被均分为100單位的vmin
在这里我们只用到了vmin
当我们在竖屏时候,100vmin
的取值为手机屏幕宽度当横屏时候,100vmin
的取值仍然为手机屏幕宽度所以以vmin
为单位的元素,在手机屏幕发生旋转的时候其显示大小并不会发生改变(毕竟不管横屏竖屏,100vmin
都等于屏幕的宽度)
在使用rpx
进行布局时,750rpx
的取值为掱机屏幕的宽度而在使用vmin
时,100vmin
的取值为手机屏幕的宽度所以,rpx
和vmin
之间存在一个换算关系即:x rpx=( x * 100 /
在实际开发中,我们不可能去手动计算每一个
vmin的值由于我用的是scss
,所以我用scss
进行了一下预处理这里提供两种方式,一种是css
函数另一种是css mixin
PS:这两种方法均来自網络,我还是比较喜欢第一种~