今天在实现微信小程序的一个横向导航的时候出现了一个问题,就是每次滑到滚动条最右边的时候
scrollLeft的值都不准确
原因:因为每次滚动监听事件都会被调用比较耗费资源系统会默认节流,可以在scroll-view 加一个 throttle=“{{false}}” 关闭节流,如下:
<scroll-view :throttle='false' bindscroll="onScroll">
<!-- ... -->
</scroll-view>
但是这种方法会影响性能,这是因为关闭节流后,onScroll 事件会在每次滚动时触发,可以提高滚动位置监测的精确度。但需要注意的是,这会增加一定的性能消耗,如果滚动区域很大,滚动频繁,会带来较大的计算压力。所以在复杂场景下,我们还是建议保留系统的节流行为
如果不想消耗过多性能,又想实现精确的滚动监听,怎么办?
1. 使用节流或防抖来限制onScroll事件的触发频率
// 节流,100ms内只触发一次
onScroll: _.throttle(function(e) {
//...
}, 100)
// 防抖,滚动结束500ms后触发
onScroll: _.debounce(function(e) {
//...
}, 500)
2. 只在特定情况主动获取滚动值:文章来源:https://www.toymoban.com/news/detail-609184.html
- 滚动开始时获取一次
- 滚动结束时获取一次
- 滚动到边界时获取一次通过wx.createSelectorQuery()主动获取滚动值,只在需要精确值时触发
onScrollStart() { this.getScrollTop() } onScrollEnd() { this.getScrollTop() } onScroll() { if(达到边界) { this.getScrollTop() } }
文章来源地址https://www.toymoban.com/news/detail-609184.html
到了这里,关于uniapp微信小程序scroll-view滚动scrollLeft不准确的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!