节点信息
node api 暂不支持
Page({ onReady() { let node = xhs.createSelectorQuery(); // 节点的位置信息,针对普通节点 node.select('node').boundingClientRect(rect => { }) // 节点的相关信息,针对普通节点 node.select('node').scrollOffset().exec(); // 节点的滚动位置信息,针对特殊节点 node.select('node').fields().exec(); } });
添加节点的布局位置的查询请求,相对于显示区域(单位:像素)。其功能类似于 DOM 的 getBoundingClientRect 。返回值是 nodesRef 对应的 selectorQuery
参数 | 类型 | 说明 |
---|---|---|
left | Number | 节点左边界坐标 |
right | Number | 节点右边界坐标 |
top | Number | 节点上边界坐标 |
bottom | Number | 节点下边界坐标 |
width | Number | 节点宽度 |
height | Number | 节点高度 |
Page({ queryNodeInfo() { xhs.createSelectorQuery() .select('.target') .boundingClientRect(rect => { console.log("节点信息", rect); xhs.showModal({ title: 'NodesRef.boundingClientRect的返回值', content: JSON.stringify(rect) }); }).exec(); } });
获取节点的相关信息,需要获取的字段在 fields 中指定。返回值是 nodesRef 对应的 selectorQuery
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
id | Boolean | 否 | 是否返回节点 id | |
dataset | Boolean | 否 | 是否返回节点 dataset | |
rect | Boolean | 否 | 是否返回节点布局位置(left right top bottom) | |
size | Boolean | 否 | 是否返回节点尺寸(width height) | |
scrollOffset | Boolean | 否 | 是否返回节点的 scrollLeft scrollTop ,节点必须是 scroll-view 或者 viewport | |
computedStyle | Array. | 否 | 指定样式名列表,返回节点对应样式名的当前值 | |
context | context interface | 否 | 节点的 Context 对象查询请求 |
Page({ data: { NodesRefData: '' }, queryNodeInfo() { xhs.createSelectorQuery() .select('.scroll-view') .fields({ id: false, dataset: false, rect: true, size: true, scrollOffset: true, computedStyle: ['margin', 'backgroundColor'] }, res => { console.log('节点信息', res); this.setData('NodesRefData', JSON.stringify(res)); // res.dataset; // 节点的dataset // res.width; // 节点的宽度 // res.height; // 节点的高度 // res.scrollLeft; // 节点的水平滚动位置 // res.scrollTop; // 节点的竖直滚动位置 // res.scrollX; // 节点 scroll-x 属性的当前值 // res.scrollY; // 节点 scroll-y 属性的当前值 // 此处返回指定要返回的样式名属性 // res.margin; // res.backgroundColor; }).exec(); } });
添加节点的滚动位置查询请求(单位:像素)。节点必须是 scroll-view 或者 viewport 。返回值是 nodesRef 对应的 selectorQuery
回调函数,在执行 SelectorQuery.exec 方法后,返回节点信息
Page({ getContext () { xhs.createSelectorQuery().select('.the-video-class').context(function(res){ console.log(res.context) // 节点对应的 Context 对象。如:选中的节点是 <video> 组件,那么此处即返回 VideoContext 对象 }).exec() } })
基础库从 > 3.11.0 开始支持 context
添加节点的 Context 对象查询请求。目前仅支持 VideoContext、EditorContext和 MapContext 的获取
基础库从 > 3.17.x 开始支持 跨组件多 selector 查询场景
xhs.createSelectorQuery() .select('.scroll-view > .test') .scrollOffset(res => { ... }).exec(); }
返回的节点信息中,每个节点的滚动位置用 scrollLeft 、 scrollTop 字段描述。如果提供了 callback 回调函数,在执行 selectQuery 的 exec 方法后,节点信息会在 callback 中返回。
参数 | 类型 | 说明 |
---|---|---|
scrollLeft | Number | 节点水平滚动位置 |
scrollTop | Number | 节点竖直滚动位置 |
Page({ data: { appear: false }, onReady() { this.intersectionObserver = xhs.createIntersectionObserver(); this.intersectionObserver .relativeTo('.scroll-view') .observe('.ball', res => { console.log('observe', res); this.setData('appear', res.intersectionRatio > 0); }); }, getNodeRef() { xhs.createSelectorQuery() .select('.scroll-view') .scrollOffset(res => { console.log('scrollOffset:', res); xhs.showModal({ title: 'scrollOffset', content: JSON.stringify(res) }); }).exec(); } });