Resize Response Display Area

Display Area Size

The display area refers to the area in Mini Program interface where you can arrange elements freely. By default, the size of the display area remains unchanged after the page initialization. But you can change the default size by either of the following two ways.

Enable Screen Rotation on a Phone

Mini Programs support screen rotation as of base library version 2.4.0. To allow the Mini Program pages to support screen rotation, set "pageOrientation": "auto" in the window segment of app.json, or configure "pageOrientation": "auto" in the page json file.

The following example shows how to enable screen rotation in a single page json file.

Code example:

{
  "pageOrientation": "auto"
}

If the above declaration is added to the page, the page rotates and the display area is resized as the screen rotates.

As of library version 2.5.0, pageOrientation can be set to landscape, which locks the screen orientation to "Landscape".

Enable Screen Rotation on an iPad

Mini Programs running on iPad support screen rotation as of base library 2.3.0. To allow the Mini Program to support screen rotation, add "resizable": true to app.json.

Code example:

{
  "resizable": true
}

If the above declaration is added to the Mini Program, the Mini Program page rotates and the display area is resized as the screen rotates. Note: You cannot enable or disable screen rotation for a single page.

Media Query

Sometimes, the page layout varies with the size of the display area. You can use "media query" to solve most of the problems.

Code example:

.my-class {
  width: 40px;
}

@media (min-width: 480px) {
  /* Style rule that only takes effect on  480px  or wider screens */
  .my-class {
    width: 200px;
  }
}

Screen Rotation Event

Sometimes, subtle layout changes cannot be controlled by using "media query" alone. In this case, js can be used.

You can use selectorQuery.selectViewport to read the size of the display area of the page in js.

The onResize of the page can be used to listen to the page resizing event. For custom components, you can use the "resize lifecycle" function to listen to the event. The callback function returns the size of the display area. (This is supported as of base library version 2.4.0.)

Code example:

Page({
  onResize(res) {
    res.size.windowWidth // New width of display area
    res.size.windowHeight // New height of display area
  }
})
Component({
  pageLifetimes: {
    resize(res) {
      res.size.windowWidth // New width of display area
      res.size.windowHeight // New height of display area
    }
  }
})

In addition, you can also use wx.onWindowResize to listen to the event (not recommended).

Bug & tips:

  • Bug: In Weixin 6.7.3 for Android, an error occurs with the screen orientation when the screen is rotated for the live-pusher component.