小程序 获取位置 坐标
// 获取元素绝对位置(相对于页面顶部) getAbsolutePosition(selector) { return new Promise((resolve) => { // 获取元素位置 wx.createSelectorQuery() .select(selector) .boundingClientRect(rect => { // 获取页面滚动位置 wx.createSelectorQuery() .selectViewport() .scrollOffset(scroll => { const absoluteTop = rect.top + scroll.scrollTop resolve({ top: absoluteTop, left: rect.left + scroll.scrollLeft }) }).exec() }).exec() }) }, 调用方案 onReady() { var this_ = this; setTimeout(function() { this_.getAbsolutePosition('#type_list').then(pos => { console.log('绝对位置:', pos.top, pos.left) this_.setData({ type_list_top: pos.top }) }) }, 100); }, 获取这个位置。屏幕滚动也不会受影响。 超过这个位置 显示 我们的浮动菜单 。 onPageScroll(options) { let scrollTop = options.scrollTop; console.log(scrollTop); if (scrollTop >= this.data.type_list_top) { //可以显示 浮动导航了。 console.log("可以显示 浮动导航了") this.setData({ type_list_fiexd: true }) } else { this.setData({ type_list_fiexd: false }) } }
之前用的方案是这样。
load_ok() { // id="tab-control" var this_ = this; wx.createSelectorQuery().select('#type_list').boundingClientRect((rect) => { //console.log("rect.top::" + rect.top);//这个值是一直变化的。 如果向下滑动到顶部, 会变成0 if (rect.top <= 0) { //可以显示 浮动导航了。 console.log("可以显示 浮动导航了") this_.setData({ type_list_fiexd: true }) } else { this_.setData({ type_list_fiexd: false }) } }).exec(); }, 调用 方法 。 在onReady 里面写个定时器。一直调用这个load_ok。不太好。所以改了。
站长微信:xiaomao0055
站长QQ:14496453