1. 小程序横屏
在目标页面json
文件里设置"pageOrientation": "landscape"
即可实现全屏,这个参数默认是"portrait"
(竖屏),设置"auto"
表示跟随手机系统自动转换。
需要注意的是,设为横屏后,rpx单位不再生效,有人建议使用px,但是这样不能实现自适应布局,所以我们需要引入一个新的单位:vmin。
2. 尺寸单位vmin
vmin:视口宽度vw和高度vh两者之间的最小值。
其实,有vmin自然就会有vmax,vmax意为视口宽度vw和高度vh两者之间的最大值。
vw我们都理解,是当前设备宽度的1%,即1vw就是设备宽度的1%,50vw就是设备宽度的50%(vh同理)
vmin怎么理解呢?拆一下,看成v + min,前面的v还是vw中的v,min则是w和h中的最小值,这样一来,vmin就能理解为当前设备最短边的1%(vmax则是最长边的1%),是不是立马就懂啦?50vmin就是最短边的一半,100vmin就是最短边的全部。
什么时候会用到这两个单位呢?
案例1:一个总能展示在屏幕的正方形(如上图左边黄色区域)可以这样定义:
// 表示宽高都取当前设备最短边(无论设为横屏还是竖屏,最短边都是手机的宽)的100%倍
.box {
width: 100vmin;
height: 100vmin;
}
案例2:一个以屏幕最长边为边长的正方形(如上图右边黄色区域)可以这样定义:
// 表示宽高都取当前设备最长边(无论设为横屏还是竖屏,最长边都是手机的高)的100%倍
.box {
width: 100vmax;
height: 100vmax;
}
所以,我们在小程序中使用vmin作为长度单位就能保证所有元素都能正常展示,也可以适应各种尺寸的屏幕了。
但是这样一来,写CSS的时候不就很麻烦?我们想实现一个竖屏状态下是200rpx * 50rpx的按钮,在横屏状态下使用vmin做单位的话,宽高各是多少呢?这涉及rpx和vmin的单位换算啊,所以我们需要定义一个转换函数帮助我们处理这些转换逻辑。
这篇文章介绍了如何在微信小程序中使用SCSS,这里我们使用SCSS定义该函数,:
// rpx 转 vmin
@function vmin($rpx) {
@return #{$rpx * 100 / 750}vmin;
}
于是,横屏页面下,我们可以这样定义一个按钮使之做到自适应:
.btn {
width: vmin(200);
height: vmin(50);
}
最终渲染出来的结果是:
.btn {
width: 26.66667vmin;
height: 6.66667vmin;
}
你学废了吗?
微信搜索「熊猫活动助理
」或微信扫描下方小程序码进入体验。
小程序中的抽奖界面使用了横屏模式,可以进入小程序体验一下,具体操作可参考《如何制作一个抽奖点名工具》。
0 条评论