Merge pull request #28316 from deepcoldy/master

add createIntersectionObserver for weixin-app
This commit is contained in:
Sana Ajani
2018-09-07 15:04:53 -07:00
committed by GitHub
2 changed files with 74 additions and 1 deletions
+61
View File
@@ -2406,6 +2406,67 @@ declare namespace wx {
* @version 1.4.0
*/
function createSelectorQuery(): SelectorQuery;
/**
* WXML节点布局相交状态
*/
interface CreateIntersectionObserverOption {
thresholds?: number[];
initialRatio?: number;
selectAll?: boolean;
}
interface Margins {
left?: number;
right?: number;
top?: number;
bottom?: number;
}
interface ObserveResponse {
id: string;
dataset: any;
time: number;
intersectionRatio: number; // 相交区域占目标节点的布局区域的比例
boundingClientRect: {
bottom: number;
right: number;
left: number;
top: number;
width: number;
height: number;
};
intersectionRect: {
bottom: number;
right: number;
left: number; // 相交区域的左边界坐标
top: number; // 相交区域的上边界坐标
width: number; // 相交区域的宽度
height: number; // 相交区域的高度
};
relativeRect: {
bottom: number;
right: number;
left: number;
top: number;
};
}
interface CreateIntersectionObserverCallBack {
relativeTo(
selector?: string,
margins?: Margins
): CreateIntersectionObserverCallBack;
relativeToViewport(
margins?: Margins
): CreateIntersectionObserverCallBack;
observe(
selector?: string,
callback?: (response: ObserveResponse) => void
): CreateIntersectionObserverCallBack;
disconnect(): void;
}
function createIntersectionObserver(
options?: CreateIntersectionObserverOption
): CreateIntersectionObserverCallBack;
interface NodesRefRect {
/** 节点的ID */
id: string;
+13 -1
View File
@@ -190,7 +190,19 @@ Page({
},
onPageScroll: () => {
// this.
// Do something when page scroll
// Do something when page scroll
wx.createIntersectionObserver()
.relativeToViewport()
.observe("div", res => {
console.log(res.id);
console.log(res.dataset);
console.log(res.intersectionRatio);
console.log(res.intersectionRect.left);
console.log(res.intersectionRect.top);
console.log(res.intersectionRect.width);
console.log(res.intersectionRect.height);
})
.disconnect();
},
onTabItemTap(item: any) {
this.setData({