四. 获取界面上节点信息
在开发的过程中,如需查询某个节点的当前位置、属性、样式等信息,您可以使用 ty.createSelectorQuery。
返回值是一个 SelectorQuery 对象实例。
示例代码
const query = ty.createSelectorQuery();
query.select("#the-id").boundingClientRect();
query.selectViewport().scrollOffset();
query.exec(function (res) {
res[0].top; // #the-id 节点的上边界坐标
res[1].scrollTop; // 显示区域的竖直滚动位置
});
获取节点的相交状态
ty.createIntersectionObserver API 可用于监听两个或多个组件节点在布局位置上的相交状态。这一组 API 常常可以用于推断某些节点是否展示给用户 以及 有多大比例的区域会被展示。
这一组 API 涉及的主要概念包括:
- 参照节点:监听的参照节点,取节点的布局区域作为参照区域。如果有多个参照节点,则会取这些节点的布局区域的 交集 作为参照区域。页面显示区域也可作为参照区域之一。
- 目标节点:监听的目标,默认只能是一个节点(使用
selectAll
选项时,可以同时监听多个节点)。 - 相交区域:目标节点的布局区域与参照区域的相交区域。
- 相交比例:相交区域占参照区域的比例。
- 阈值:如果相交比例达到阈值,则会触发监听器的回调函数。
以下代码表示当 .ball
和 .scroll-view
相交时,即触发回调函数。
onLoad(){
this._observer = ty.createIntersectionObserver()
this._observer
.relativeTo('.scroll-view')
.observe('.ball', (res) => {
this.setData({
appear: res.intersectionRatio > 0
})
})
}
onUnload() {
if (this._observer) this._observer.disconnect()
}
五. 动画
在小程序中,通常可以使用 CSS 渐变 和 CSS 动画 来创建简易的界面动画。 同时,还可以使用 ty.createAnimation 接口来动态创建简易的动画效果。
示例代码
该示例代码实现一个简单的旋转动画效果,实现更多效果。
<view class="animation-element"
animation="{{animation}}"></view>
<button bind:tap="rotate">旋转</button>
Page({
data: {
animation: [],
},
onReady: function () {
this.animation = ty.createAnimation();
},
rotate: function () {
this.animation.rotate(Math.random() * 720 - 360).step();
let anim = this.animation.export();
this.setData({ animation: anim });
},
});
六. 逻辑层
1. 页面 or 组件获取 App 事件
智能小程序 API 主要提供以下应用级事件:
- [ty.onAppHide]:监听小程序切后台事件。该事件与
App.onHide
的回调时机一致。 - [ty.offAppHide]:取消监听小程序切后台事件
- [ty.onAppShow]:监听小程序切前台事件。该事件与
App.onShow
的回调参数一致。 - [ty.offAppShow]:取消监听小程序切前台事件。
- [ty.onError]:监听小程序错误事件。如脚本错误或
API
调用报错等。该事件与App.onError
的回调时机与参数一致。 - [ty.offError]:取消监听小程序错误事件。
- [ty.onThemeChange]:监听主题变更事件。
- [ty.offThemeChange]:取消监听主题变更事件。
- [ty.onPageNotFound]:监听小程序要打开的页面不存在事件。该事件与
App.onPageNotFound
的回调时机一致。
2. 智能小程序模块化
👉 立即免费领取开发资源,体验涂鸦 MiniApp 小程序开发。