async _handleBrandListScroll() { const { ids, mainScrollerOffset } = this.data; let indexs: number[] = []; for (const id of ids) { const [[{ top: rectTop }]] = await queryBoundingClient(this, id); if (typeof rectTop !== 'number') continue; if (rectTop <= mainScrollerOffset) { const idIndexs = getIdIndexs(id); if (!_.isUndefined(idIndexs)) { indexs = idIndexs; } } else { break; } } const [mainIndex, subIndex] = indexs; if (this.data.currentLeftTabIndex !== mainIndex) { this.setData({ currentLeftTabIndex: mainIndex }); this.updateCurrentTopTabList(mainIndex); } if (this.data.currentTopTabIndex !== subIndex) { this.setData({ currentTopTabIndex: subIndex }); this.updateTopTabsScrollLeft(subIndex); }},
主要问题是 queryBoundingClient 是异步返回结果的(在微信小程序环境中),导致 _handleBrandListScroll 的 throttle 无效,结果 indexs 不准。体现在视图上就是,滑动过快时当前选中的 tab 来回横跳。
async _handleBrandListScroll() { const { ids, mainScrollerOffset } = this.data; let indexs: number[] = []; // Step 1: 批量处理异步请求 const rectTops = await Promise.all(ids.map(id => queryBoundingClient(this, id))); for (let i = 0; i < rectTops.length; i++) { const [[{ top: rectTop }]] = rectTops[i]; if (typeof rectTop !== 'number') continue; if (rectTop <= mainScrollerOffset) { const idIndexs = getIdIndexs(ids[i]); if (!_.isUndefined(idIndexs)) { indexs = idIndexs; } } else { break; } } const [mainIndex, subIndex] = indexs; if (this.data.currentLeftTabIndex !== mainIndex) { this.setData({ currentLeftTabIndex: mainIndex }); this.updateCurrentTopTabList(mainIndex); } if (this.data.currentTopTabIndex !== subIndex) { this.setData({ currentTopTabIndex: subIndex }); this.updateTopTabsScrollLeft(subIndex); }},
本文向大家介绍vue监听滚动事件实现滚动监听,包括了vue监听滚动事件实现滚动监听的使用技巧和注意事项,需要的朋友参考一下 在vue中实现滚动监听和原生js无太大差异,下面是一个简单的demo,可在控制台查看结果 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!
本文向大家介绍vue监听滚动事件的方法,包括了vue监听滚动事件的方法的使用技巧和注意事项,需要的朋友参考一下 vue中监听滚动事件,然后对其进行事件处理,一般有:1. 滚动到顶部吸附; 2. 根据滚动的位置激活对应的tab键(锚链接tab键) 这两种方式的处理都是可通过监听scroll来实现 处理方法 1. 滚动到顶部吸附 html元素 methods方法 2. 根据滚动的位置激活对应的tab键
本文向大家介绍javascript监听鼠标滚轮事件浅析,包括了javascript监听鼠标滚轮事件浅析的使用技巧和注意事项,需要的朋友参考一下 我们都见到过这些效果,用鼠标滚轮实现某个表单内的数字增加减少操作,或者滚轮控制某个按钮的左右,上下滚动。这些都是通过js对鼠标滚轮的事件监听来实现的。今天这里介绍的是一点简单的js对于鼠标滚轮事件的监听。 不同浏览器不同的事件 首先,不同的浏览器有不同的滚
导航条示例 滚动监听插件会根据滚动的位置,自动更新导航条的目标。滚动在导航条下面的区域,查看active类的改变。弹出菜单的子项也同样会被高亮。 用法 需要Bootstrap导航条 Scrollspy currently requires the use of a Bootstrap nav component for proper highlighting of active links. 滚动
滚动监听是一个 jQuery 插件,用于追踪某一确定元素并且元素目前处于用户屏幕的焦点。我们的示例在每个文档页的右边。单击这些链接将滚动到页面元素的位置。 表格内容的结构 <div class="row"> <div class="col s12 m9 l10"> <div id="introduction" class="section scrollspy"> <p>内容 </p>