微信小程序开发响应显示区域变化
您好,我们致力于开发适用于微信小程序的响应式布局解决方案,以提供更好的用户体验。以下介绍了如何在小程序中响应显示区域变化。
1. 显示区域尺寸
显示区域是指小程序界面中可以自由布局展示的区域。默认情况下,小程序界面的显示区域尺寸自页面初始化起就不会发生变化,但有以下两种方式可以改变该默认行为。
1.1 在手机上启用屏幕旋转支持
从基础库版本 2.4.0 开始,小程序在手机上支持屏幕旋转。如果想使小程序页面支持屏幕旋转,需在 app.json 的 window 段中设置 pageOrientation: "auto",或者在页面的 json 文件中配置 pageOrientation: "auto"。以下是在单个页面 json 文件中启用屏幕旋转的示例:
{
"pageOrientation": "auto"
}
如果页面添加了上述声明,则在屏幕旋转时,这个页面将随之旋转,显示区域尺寸也会随着屏幕旋转而变化。从基础库版本 2.5.0 开始,pageOrientation 还可以被设置为 landscape,表示固定为横屏显示。
1.2 在 iPad 上启用屏幕旋转支持
从基础库版本 2.3.0 开始,在 iPad 上运行的小程序可以支持屏幕旋转。如果想使小程序支持 iPad 屏幕旋转,需在 app.json 中添加 resizable: true。以下是示例代码:
{
"resizable": true
}
如果小程序添加了上述声明,则在屏幕旋转时,小程序将随之旋转,显示区域尺寸也会随着屏幕旋转而变化。需要注意的是,在 iPad 上不能单独配置某个页面是否支持屏幕旋转。
2. Media Query
有时,对于不同尺寸的显示区域,页面的布局会有所差异。此时可使用 media query 来解决大多数问题。以下是示例代码:
.my-class {
width: 40px;
}
@media (min-width: 480px) {
/* 仅在 480px 或更宽的屏幕上生效的样式规则 */
.my-class {
width: 200px;
}
}
在 WXML 中,还可以使用 match-media 组件来根据 media query 匹配状态展示、隐藏节点。同时,可以在页面或者自定义组件 JS 中使用 this.createMediaQueryObserver() 方法来创建一个 MediaQueryObserver 对象,用于监听指定的 media query 的匹配状态。
3. 屏幕旋转事件
有时,仅仅使用 media query 无法控制一些精细的布局变化。此时可以使用 js 作为辅助。在 js 中读取页面的显示区域尺寸,可使用 selectorQuery.selectViewport。
页面尺寸发生改变的事件,可以使用页面的 onResize 来监听。对于自定义组件,可以使用 resize 生命周期来进行监听。回调函数中将返回显示区域的尺寸信息(从基础库版本 2.4.0 开始支持)。以下是示例代码:
Page({
onResize(res) {
res.size.windowWidth // 新的显示区域
-
B2B2C多用户商城系统支持企业自营与商户入驻模式共存 会员一站式精细化营销工具 多用户分销,带来爆发式增长
系统支持平台自营+供应商店铺共存的经营模式(类天猫&京东模式),帮助企业打造生态级商业平台为目的的电子商务系统。
免费试用系统 -
B2B2B电商交易系统优化供应链协作 授信及账期支付 商品按照数量阶梯设价
全渠道订货/采购及经销商管理数字化系统,实现供应链整合和交易便捷化。
免费试用系统 -
S2B2B电商交易系统供销一体化,提高市场集中度 集团管控一体化,有效实现供需匹配 移动应用一体化,提高运营综合效率
上下游资源整合数字化解决方案,赋能产业供应链,构建产业互联网生态体系。
免费试用系统
