介绍
page 是页面最顶层根容器,相当于H5的 <body>,全局默认内置样式:
page {
display: block;
width: 100%;
overflow-x: hidden;
min-height: 100vh;
user-select: none;
}
page 关键特性
- 作用域:仅当前页面
.wxss、app.wxss可修改;自定义组件内无法选中 page。 - 不可用属性:
position: fixed、z-index、transform等定位层级样式写在 page 会失效,浮层要写子view。 - 宽度固定基准:所有机型统一逻辑宽度
750rpx(相当于100%),无需多分辨率适配。 - 默认纵向滚动,性能更好
应用场景
- 全局统一页面背景(最高频)
- 全局适配手机安全区(所有项目标配)
- 全局统一默认字体大小、文字颜色
自定义 page 常用样式
1. 通用基础配置(含安全区适配刘海/底部横条)
page {
width: 750rpx;
min-height: 100vh;
background-color: #f5f7fa; /* 页面底色 */
overflow-x: hidden;
/* iOS刘海、灵动岛顶部安全距离 */
padding-top: env(safe-area-inset-top);
/* iPhone底部小黑条安全距离 */
padding-bottom: env(safe-area-inset-bottom);
font-size: 30rpx;
color: #333;
}
2. 限制大屏最大宽度(平板/折叠屏不无限拉宽)
page {
max-width: 100%;
margin: 0 auto; /* 大屏居中显示 */
}
页面样式文件层级与覆盖规则
小程序样式优先级从低到高:
- 小程序内置默认 page 样式
app.wxss全局公共样式(所有页面生效)- 当前页面
.wxss页面私有样式(覆盖全局)
示例:
app.wxss
page { background: #fff; }index.wxss
page { background: #f5f7fa; } /* 本页面底色生效,覆盖全局 */
页面布局通用规范
页面所有内容建议包裹一层外层容器,统一控制左右边距,避免紧贴屏幕边缘:
WXML
<view class="page-wrap">
<!-- 页面所有业务内容 -->
</view>
WXSS
page {
min-height: 100vh;
background: #f5f7fa;
overflow-x: hidden;
}
.page-wrap {
width: 750rpx;
padding: 30rpx; /* 左右留白,统一边距 */
box-sizing: border-box; /* padding不会撑大750rpx宽度 */
}
不要修改的 page 样式
- 改 width:原生默认 100%,无需手动覆盖;
- margin:给 page 加左右 margin 会 横向溢出,基本没人这么写。
- position/fixed/z-index/transform:page 不支持定位,不会在这里写;
- 页面滚动相关:纵向滚动原生够用,只有自定义滚动才用 scroll-view,不改 page;
防止横向溢出问题
page 默认 width:100%,盒模型默认是 content-box:
width:100%只控制内容区占满屏幕;padding-left/padding-right、margin-left/margin-right会在 100% 宽度之外额外增加尺寸;总宽度 = 屏幕宽100% + 左右padding + 左右margin,导致 超出视口,出现横向滚动条。
示例(溢出错误写法):
page {
width: 100%;
padding: 0 30rpx; /* 左右各30rpx,向外扩宽 */
}
解决方案1(最常用)
给 page 设置 box-sizing: border-box
border-box 规则:width 包含内容 + padding + border,padding 向内压缩,不会溢出。
page {
width: 100%;
box-sizing: border-box; /* 关键 */
padding: 0 30rpx;
overflow-x: hidden;
}
解决方案2(推荐)
padding 不要写在 page,写内层容器
page 只负责背景、安全区,页面留白交给子容器,完全避开溢出问题:
/* page 只处理底色、安全区,不加左右padding */
page {
background: #f5f7fa;
padding-top: env(safe-area-inset-top);
padding-bottom: env(safe-area-inset-bottom);
}
/* 内容容器统一留白 */
.wrap {
width: 750rpx;
padding: 0 30rpx;
box-sizing: border-box;
}
wxml:
<view class="wrap">页面内容</view>
总结
- page 尽量不设置左右 padding,留白交给内部容器;
- 若必须给 page 加左右 padding,强制搭配
box-sizing: border-box; - page 禁止设置左右 margin;大屏居中用
max-width + margin:0 auto; - 全局兜底加上
overflow-x: hidden,防止极端布局溢出出现横向滚动条。