渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)
功能描述
用于支持内联文本和 image / navigator 的混排
渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)
用于支持内联文本和 image / navigator 的混排
基础库 3.0.1 开始支持,低版本需做兼容处理。
渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)
截图组件。 支持将其子节点的渲染结果导出成图片,该组件需配合 snapshot 接口使用。 目前仅在 Skyline 渲染引擎 下支持。
| 属性 | 类型 | 默认值 | 必填 | 说明 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| mode | string | view | 是 | 渲染模式 | ||||||||||
| ||||||||||||||
tip:如需离屏渲染导出,可将 snapshot 组件移动到屏幕外或设置 width: 100%; position: absolute; transform: scale(0) 即可,但不能设置为 display: none 或 visibility: hiddentip:子节点不能包含原生组件,其他任意组件均可使用tip:支持对任意大小的区域导出图片,即导出图片没有尺寸限制tip: 如需实现长列表截图,不建议直接嵌在 scroll-view 内(即 <scroll-view><snapshot></snapshot></scroll-view>),会影响列表滚动性能,建议将 snapshot 组件放在 scroll-view 外,与 scroll-view 加载同一批列表数据,要截图时再将 snapshot 渲染出来Skyline 下对节点进行 transform: scale() rotate() 动画时,若子节点内容比较复杂,动画性能可能不佳。为解决该问题,可利用 snapshot 组件改变渲染模式。
<snapshot mode="view">
<view></view>
</snapshot>
以 view 模式渲染时,snapshot 组件与普通的 view 无差别,对子节点设置样式,变化会体现在界面上。
以 picture 模式渲染时,snapshot 组件会对当下渲染的子节点进行截图,后续子节点被替换为图片进行渲染,此时对子节点设置样式,变化不会体现在界面上。
picture 模式下进行 transform: scale() rotate() 动画时,性能较好。此时通过 setData 等对子节点进行的修改,当再次切换为 view 模式时,界面会立刻改变为最终样式。
通常在对大范围节点进行 scale 或 rotate 动画时,可在动画开始设置为 picture 模式,动画结束设置为 view 模式,以提高动画表现。如子节点内容会发生改变,则不适用该模式切换。
<snapshot id="target">
<view>content</view>
</snapshot>
Page({
onReady() {
this.createSelectorQuery()
.select("#target")
.node()
.exec(res => {
const node = res[0].node
node.takeSnapshot({
type: 'arraybuffer',
format: 'png',
success: (res) => {},
fail(res) {}
})
}
})
在开发者工具中预览效果
基础库 2.16.0 开始支持,低版本需做兼容处理。
微信 Windows 版:支持
微信 Mac 版:支持
微信 鸿蒙 OS 版:支持
渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView
共享元素。
共享元素是一种动画形式,类似于 Flutter 的 Hero 动画,表现为元素像是在页面间穿越一样。该组件需与 page-container 组件结合使用。
使用时需在当前页放置 share-element 组件,同时在 page-container 容器中放置对应的 share-element 组件,对应关系通过属性值 key 映射。当设置 page-container 显示时,transform 属性为 true 的共享元素会产生动画。当前页面容器退出时,会产生返回动画。
worklet 函数需要开启开发者工具 “将 JS 编译成 ES5” 或 “编译 worklet 函数” 选项。| 属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 | |
|---|---|---|---|---|---|---|
| key | string | 是 | 映射标记,页面内唯一 | 2.29.2 | ||
| transform | boolean | false | 否 | 是否进行动画 | 2.16.0 | |
| duration | number | 300 | 否 | 动画时长,单位毫秒 | 2.16.0 | |
| easing-function | string | ease-out | 否 | css缓动函数 | 2.16.0 |
| 属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 | |||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| transition-on-gesture | boolean | false | 否 | 手势返回时是否进行动画 | 2.29.2 | |||||||||||||||||||||||
| shuttle-on-push | string | to | 否 | 指定 push 阶段的飞跃物 | 2.30.2 | |||||||||||||||||||||||
| ||||||||||||||||||||||||||||
| shuttle-on-pop | string | to | 否 | 指定 pop 阶段的飞跃物 | 2.30.2 | |||||||||||||||||||||||
| worklet:onframe | callback | 否 | 动画帧回调 | 2.30.2 | ||||||||||||||||||||||||
| rect-tween-type | string | materialRectArc | 否 | 动画插值曲线 | 2.30.2 | |||||||||||||||||||||||
| ||||||||||||||||||||||||||||
在开发者工具中预览效果
在开发者工具中预览效果
基础库 3.7.8 开始支持,低版本需做兼容处理。
相关文档: 聊天工具模式、Skyline 渲染引擎、Skyline 迁移起步
渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)
展示微信开放数据。
| 属性 | 类型 | 默认值 | 必填 | 说明 | |||||
|---|---|---|---|---|---|---|---|---|---|
| type | string | 是 | 开放数据类型 | ||||||
| |||||||||
| members | Array.<string> | 否 | 群成员group_openid列表 | ||||||
<open-data-list type="groupMembers" members="{{members}}">
<view class="userinfo" slot:index>
<open-data-item class="avatar " type="userAvatar" index="{{index}}" />
<open-data-item class="" type="userNickName" index="{{index}}" />
</view>
</open-data-list>
基础库 3.7.8 开始支持,低版本需做兼容处理。
相关文档: 聊天工具模式、Skyline 渲染引擎、Skyline 迁移起步
渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)
展示微信开放数据,需配合 open-data-list 组件使用。
| 属性 | 类型 | 默认值 | 必填 | 说明 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| type | string | 是 | 开放数据类型 | ||||||||
| |||||||||||
| index | number | 是 | 序号 | ||||||||
<open-data-list type="groupMembers" members="{{members}}">
<view class="userinfo" slot:index>
<open-data-item class="avatar " type="userAvatar" index="{{index}}" />
<open-data-item class="" type="userNickName" index="{{index}}" />
</view>
</open-data-list>
基础库 3.4.0 开始支持,低版本需做兼容处理。
渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)
容器转场动画组件。
点击 <open-container> 组件,当使用 wx.navigateTo 跳转下一页面时,对其子节点和下一个页面进行过渡。
下个页面从 <open-container> 所在位置大小渐显放大,同时 <open-container> 内容渐隐,过渡效果包含背景色、圆角和阴影。
源页面 <open-container> 为 closed 状态,转场动画后为 open 状态。
| 属性 | 类型 | 默认值 | 必填 | 说明 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| closed-color | string | white | 是 | 初始容器背景色 | |||||||
| closed-elevation | number | 0 | 是 | 初始容器影深大小 | |||||||
| closed-border-radius | number | 0 | 是 | 初始容器圆角大小 | |||||||
| middle-color | string | ” | 是 | fadeThrough 模式下的过渡背景色 | |||||||
| open-color | string | white | 是 | 打开状态下容器背景色 | |||||||
| open-elevation | number | 0 | 是 | 打开状态下容器影深大小 | |||||||
| open-border-radius | number | 0 | 是 | 打开状态下容器圆角大小 | |||||||
| transition-duration | number | 300 | 是 | 动画时长 | |||||||
| transition-type | string | fade | 是 | 动画类型 | |||||||
| |||||||||||
<open-container
closed-elevation="{{closedElevation}}"
closed-border-radius="{{closedBorderRadius}}"
open-elevation="{{openElevation}}"
open-border-radius="{{openBorderRadius}}"
transition-type="{{type}}"
transition-duration="{{duration}}"
bind:tap="goDetail"
>
<card/>
</open-container>
Page({
goDetail() {
wx.navigateTo({
url: 'nextPageUrl'
})
}
})
在开发者工具中预览效果
基础库 3.2.0 开始支持,低版本需做兼容处理。
相关文档: Skyline 渲染引擎、Skyline 迁移起步
渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)
在嵌套的 scroll-view 场景中,属于外层 scroll-view 的节点,只支持作为 <scroll-view type="nested"> 模式的直接子节点。不支持多个子节点,渲染时会取第一个子节点来渲染。具体用法可以参考 scroll-view
<scroll-view
type="nested"
scroll-y
>
<nested-scroll-header>
<view>会渲染</view>
<view>不会渲染,因为 nested-scroll-header 只会渲染第一个子节点</view>
</nested-scroll-header>
<nested-scroll-header>
<view>如果存在多个头部节点,那么就使用多个 nested-scroll-header 来将其包裹</view>
</nested-scroll-header>
<nested-scroll-body>
<view></view>
</nested-scroll-body>
</scroll-view>
基础库 3.2.0 开始支持,低版本需做兼容处理。
相关文档: Skyline 渲染引擎、Skyline 迁移起步
渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)
在嵌套的 scroll-view 场景中,属于里层 scroll-view 的节点,只支持作为 <scroll-view type="nested"> 模式的直接子节点。不支持多个子节点,渲染时会取第一个子节点来渲染。具体用法可以参考 scroll-view。
| 属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 |
|---|---|---|---|---|---|
| offset-top | number | 0 | 否 | 滚动目标距离顶部的距离(单位:px)。在外层 scroll-view 滚动时,此组件会在主轴方向逐渐撑开,直到此组件顶部与视窗顶部距离等于该属性值时,才开始里层 scroll-view 的滚动。默认为 0,即表示此组件撑开到顶部与视窗顶部齐平时,才开始里层 scroll-view 的滚动。 | 3.6.2 |
<scroll-view
type="nested"
scroll-y
>
<nested-scroll-header>
<view></view>
</nested-scroll-header>
<nested-scroll-body>
<scroll-view
type="list"
scroll-y
>
<view>嵌套里层的 scroll-view</view>
</scroll-view>
<view>不会渲染,因为 nested-scroll-body 只会渲染第一个子节点</view>
</nested-scroll-body>
</scroll-view>
基础库 2.29.0 开始支持,低版本需做兼容处理。
相关文档: Skyline 渲染引擎、Skyline 迁移起步
渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)
列表布局容器,仅支持作为 <scroll-view type="custom"> 模式的直接子节点或 sticky-section 组件直接子节点
| 属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 |
|---|---|---|---|---|---|
| padding | Array | [0, 0, 0, 0] | 否 | 长度为 4 的数组,按 top、right、bottom、left 顺序指定内边距 | 3.0.0 |
基础库 3.3.0 开始支持,低版本需做兼容处理。
相关文档: Skyline 渲染引擎、Skyline 迁移起步
渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)
列表构造器,仅支持作为 <scroll-view type="custom"> 模式的直接子节点。具体用法可参考 scroll-view
| 属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| padding | Array | [0, 0, 0, 0] | 否 | 长度为 4 的数组,按 top、right、bottom、left 顺序指定内边距 | ||||||||
| type | string | static | 是 | 类型,默认为定高模式 | ||||||||
| ||||||||||||
| list | Array | 是 | 需要用于渲染的列表 | |||||||||
| child-count | Array | 否 | 完整列表的长度,如果不传则取 list 的长度作为其值 | |||||||||
| child-height | Array | 否 | 列表项的高度,当 type 为 static 时必须传入 | |||||||||
| binditembuild | eventhandle | 否 | 列表项创建时触发,event.detail = {index},index 即被创建的列表项序号 | |||||||||
| binditemdispose | eventhandle | 否 | 列表项回收时触发,event.detail = {index},index 即被回收的列表项序号 | |||||||||
| initial-child-count | number | 0 | 否 | 首次渲染时渲染的列表项数量,用于减少首次渲染时的白屏时长。不传则首屏也根据布局结果按需渲染 | 3.7.12 | |||||||
tip: 目前只支持纵向滚动列表<scroll-view
type="custom"
scroll-y
>
<list-builder
list="{{list}}"
child-count="{{list.length}}"
child-height="200"
>
<view slot:item slot:index style="height: 200px;">
<view>{{item.id}}-{{index}}</view>
</view>
</list-builder>
</scroll-view>