has.createIntersectionObserver(Object component, Object options): IntersectionObserver
创建并返回一个IntersectionObserver对象实例。
ASCF的观察器使用Web原生模式,和三方存在差异,具体差异为:
Web原生观察器调用relativeTo设置的参照区域不能超出节点区域的范围。Web原生观察器相关信息可参考 IntersectionObserver 文档。
起始版本: 1.0.4
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| component | Object | 是 | 自定义组件实例。 |
| options | Object | 否 | 选项。 |
options说明:
| 参数 | 类型 | 默认值 | 必填 | 描述 |
|---|---|---|---|---|
| thresholds | Array<number> | [0] | 否 | 一个数值数组,包含所有阈值,有效值在[0, 1.0]区间。 |
| initialRatio | number | 0 | 否 | 初始的相交比例,如果调用时检测到的相交比例与这个值不相等且达到阈值,则会触发一次监听器的回调函数,有效值在[0, 1.0]区间。 |
| observeAll | boolean | false | 否 | 是否同时观测多个目标节点(而非一个),如果设为true ,observe的targetSelector将选中多个节点。 注意,同时选中过多节点将影响渲染性能。 |
返回值:
返回IntersectionObserver对象。
示例:
const observer = has.createIntersectionObserver(this, {
thresholds: [0],
initialRatio: 0,
observeAll: true
}); IntersectionObserver.disconnect()
停止监听,回调函数将不再触发。
起始版本: 1.0.4
示例:
const observer = has.createIntersectionObserver(this, {
thresholds: [0],
initialRatio: 0,
observeAll: true
});
observer.disconnect(); IntersectionObserver.observe(string targetSelector, function callback)
指定目标节点并开始监听相交状态变化情况。
起始版本: 1.0.4
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| targetSelector | string | 是 | 选择器。 |
| callback | function | 否 | 监听相交状态变化的回调函数。 |
callback返回值:
返回Object对象,包括以下字段。
| 参数 | 类型 | 描述 |
|---|---|---|
| id | string | 节点ID。 |
| dataset | Record<string,any> | 节点的自定义数据属性。 |
| intersectionRatio | number | 相交比例。 |
| intersectionRect | Object | 相交区域的边界。 |
| boundingClientRect | Object | 目标边界。 |
| relativeRect | Object | 参照区域的边界。 |
| time | number | 相交检测时的时间戳。 |
intersectionRect说明:
| 参数 | 类型 | 描述 |
|---|---|---|
| left | number | 左边界。 |
| right | number | 右边界。 |
| top | number | 上边界。 |
| bottom | number | 下边界。 |
| width | number | 宽度。 |
| height | number | 高度。 |
boundingClientRect说明:
| 参数 | 类型 | 描述 |
|---|---|---|
| left | number | 左边界。 |
| right | number | 右边界。 |
| top | number | 上边界。 |
| bottom | number | 下边界。 |
| width | number | 宽度。 |
| height | number | 高度。 |
relativeRect说明:
| 参数 | 类型 | 描述 |
|---|---|---|
| left | number | 左边界。 |
| right | number | 右边界。 |
| top | number | 上边界。 |
| bottom | number | 下边界。 |
| width | number | 宽度。 |
| height | number | 高度。 |
示例:
const observer = has.createIntersectionObserver(this, {
thresholds: [0],
initialRatio: 0,
observeAll: true
});
observer
.relativeTo('.scroll-view_H', {
left: -50,
right: -50
})
.observe('.demo-text-2', (res) => {
console.info('observe:', res);
}); IntersectionObserver.relativeTo(string selector, Object margins): IntersectionObserver
使用选择器指定一个节点,作为参照区域之一。
起始版本: 1.0.4
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| selector | string | 是 | 选择器。 |
| margins | object | 否 | 用于扩展(或收缩)参照节点布局区域的边界。 |
margins说明:
| 参数 | 类型 | 描述 |
|---|---|---|
| left | number | 节点布局区域的左边界。 |
| right | number | 节点布局区域的右边界。 |
| top | number | 节点布局区域的上边界。 |
| bottom | number | 节点布局区域的下边界。 |
返回值:
返回IntersectionObserver对象。
示例:
const observer = has.createIntersectionObserver(this, {
thresholds: [0],
initialRatio: 0,
observeAll: true
});
observer
.relativeTo('.scroll-view_H', {
left: -50,
right: -50
})
.observe('.demo-text-2', (res) => {
console.info('observe:', res);
}); IntersectionObserver.relativeToViewport(Object margins): IntersectionObserver
指定页面显示区域作为参照区域之一。
起始版本: 1.0.4
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| margins | object | 否 | 用来扩展(或收缩)参照节点布局区域的边界。 |
margins说明:
| 参数 | 类型 | 描述 |
|---|---|---|
| left | number | 节点布局区域的左边界。 |
| right | number | 节点布局区域的右边界。 |
| top | number | 节点布局区域的上边界。 |
| bottom | number | 节点布局区域的下边界。 |
返回值:
返回IntersectionObserver对象。
示例:
const observer = has.createIntersectionObserver(this, {
thresholds: [0],
initialRatio: 0,
observeAll: true
});
observer
.relativeToViewport({
left: -50,
right: -50
})
.observe('.demo-text-2', (res) => {
console.info('observe:', res);
});