首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

小程序 tab 滚动列表优化方案

类似于今日头条资讯切换列表 今天在做百度小程序的转换,发现真机上用之前的swiper-item结合scroll-view 实现的Tab列表的效果不理想,于是我重新思考,发现了一种更合适的方案。...这样导致了我每次切换到另外一个swiper-item时要计算他的滚动位置和他的全部元素高度。 我还需要频繁记录每次滚动的定位,保存起来,以便下次用的时候来拿,使用scroll事件很卡。...,内容已经生成了,但是位置没有定位,要等零点几秒才能定位到那个位置,就是说你能看到内容在从头滚动。...这样子就避免了切换时历史滚动位置需要重置的问题。于是我想到了既然用他这种做法解决了我前面的缺陷,那我把两个结合起来,不就完美解决了。...list[cid].pageNo < list[cid].pageCount) { self.getList(cid); } }, 300); }, //请求列表

2.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    记一次 「 无限滚动 」列表优化

    如图所示: 快速滚动出现空白 作为对比,看一下优化后的效果: 优化之后 问题定位 在chrome调试工具下,边拖动列表边观察dom的变化。...首先,原来无限滚动的逻辑就是基于scroll事件,通过不断滚动触发的回调,重新计算渲染到页面上的区间。 其次,为了动态调整可视区域的元素,使用了MutationObserver。...用户往下滚动时,observer-dom元素“出现”在用户视野。 每次多加载一屏的数据,循环如此,直到整个列表都渲染到页面上。...---- 总结 通常,无限滚动的方案可以分为两种: 1....虚拟长列表 优点:可以保证渲染在页面上的dom元素尽可能少 缺点:如果没有特殊处理(比如rc或锁定滚动区域),快速滚动时,基本都会有闪动的情况(也就是本次的空白问题) 2.

    3.3K20

    仿腾讯课堂固定滚动列表ReactNative组件

    前言 由于业务需要做成类似腾讯课堂课程详情滚动的效果,考虑到后面有可能有新的呈现方式,RN提供的组件没有这种滚动控件,不如自己封装,其实去年已经写了一篇但是写的比较乱,周末花了点时间重写梳理下做的东西。...跑起来运行后发现的一个严重的问题是,如果Tab导航控件的内容区域存在ScrollView或者ListView时,无法滚动,只有最外层可以滚动,也就是手势滚动被拦截了?...+手势往上则通知内层滚动容器开始滚动;内层到顶部+手势往下则通知外层开始滚动。...一个是怎么判断手势滑动以及外层滚动容器到底部和内层滚动到顶部? 第二个是寻找滚动组件并通知内层滚动组件开始滚动?...回过头来讲外层滚动容器通知内层滚动,其实通知滚动相当于不拦截事件,那么就是重写 onInterceptTouchEvent方法并返回false。而这个方法会随着手势不断调用,这时候聪明的你想到了啥?

    4.9K70

    jquery scroll 滚动加载列表 获取腾讯云图片像素信息

    jquery scroll 滚动加载列表 获取腾讯云图片像素信息 场景描述 问题处理 其他问题处理 场景描述 bootstarp列表加载图片时需要同时获取图片的像素(宽and高),对于腾讯云这类远程存储获取图片来说...,虽然也可以通过java后台调用腾讯云接口获取图片像素,但是在列表加载大量图片并且没有分页的情况下,如果通过后台逐个获取图片像素信息返回给前台页面渲染的话,会导致前台页面迟迟加载不出来,且有浏览器内存耗尽卡死的风险...问题处理 首先找到前端同事帮忙写一下scroll方法的加载结构和页面热区的宽高计算,然后补充具体参数信息及业务逻辑信息 列表html结构如下 代码如下 var start = function() {...,待滚动鼠标时再拉去当前页面热区内未加载图片像素信息的图片像素 其他问题处理 由于业务需要,除了列表页,我们同时增加了视图模式,效果如图 列表增加了滚动加载图片像素信息的方法,那么视图模式同样也需要,视图代码结构...,因为不销毁的话,在列表模式下,滚动的话也会执行视图模式的滚动方法导致资源浪费,关闭滚动方法的处理如下 //切换列表和块的方法 function toggleCustomView(){ if($('

    9010

    Vue2.0 歌手列表滚动及右侧快速入口实现

    WebApp Vue2.0 路由配置及Tab组件开发 Vue2.0 数据抓取及Swiper组件开发 Vue2.0 scroll 组件的抽象和应用 Vue2.0 歌手数据获取及排序 Vue2.0 歌手列表滚动及右侧快速入口实现...$refs.listGroup[index], 0) } } } 3 右侧快速入口_滑动滚动 当我们的手指在右侧快速入口上滑动时,歌手列表也会同步进行滚动,当我们滚动右侧快速入口时...,我们需要阻止歌手列表滚动,以及浏览器原生滚动,所以要使用@touchmove.stop.prevent阻止冒泡,并且在onShortcutTouchStart事件中记录触碰点的初始位置,以及onShortcutTouchMove...} }, components: { Scroll } } 4 右侧快速入口_高亮设置 当歌手列表滚动时...当我们滚动歌手列表页时,希望该歌手的title一直显示在顶部,并且滚动到下一个title时,新的title将旧的title顶替掉,这里就需要我们计算一个title的高度 // listview.vue

    77150

    鸿蒙开发实战案例:视频卡片和列表区域的联动滚动思路

    效果图预览使用说明向上滑动列表,页面向上滚动到末尾后隐藏视频,继续向上滑动,卡片吸顶,列表开始滚动,列表滚动到底触发回弹效果。...向下滑动列表,列表先滚动到头部后,页面向下滚动,视频显示,继续向下滑动到页面头部,页面上方触发回弹效果。点击视频卡片中的播放按钮切换视频播放状态。...视频卡片点击上一条、下一条时,通过List的滚动控制器控制列表滚动到指定位置,视频卡片不发生滚动。点击列表项,列表发生滚动,视频卡片不滚动。...Scroll容器嵌套时的滚动冲突问题,给新闻列表List设置 nestedScroll 属性,指定列表向末尾端和起始端滚动时与外层Scroll的嵌套滚动方式。...() { // 选中的列表项下标大于3时,列表向上滚动,滚动到与列表显示区域内上方间隔3个列表项或列表尾部时停止。

    10210

    【组件篇】ionic3分组索引及锚点滚动列表

    先前写过另一篇文章《ionic3开源组件》,里面有一个分类我其实没怎么用过: 锚点滚动列表 ionic2-alpha-scroll ionic2-indexed-scroll ionic3-index-list...,今天又有人和我说,于是我简单看了下源码,没发现什么问题(后来发现个原有组件不能动态刷新锚点栏的Bug),只是觉得它写得有点复杂了,和现有ionic的组件集成度还没那么好(如不能很好兼容使用单选和多选列表...所以花了几分钟,在大部分沿用原来代码的基础下,简单改动了下: 移除多余的ion-index-cell; ion-index-section修改为index-group,并替换为官方list的相关组件; 修改锚点滚动逻辑...; 修改原有组件不能动态刷新锚点栏的bug; 代码为index-list(原来代码基本没动,只改动锚点滚动逻辑)和index-group(重新实现)共两个组件,所以会发现两种不同的代码风格。

    1.5K20

    大家都能看得懂的源码之 ahooks useVirtualList 封装虚拟滚动列表

    简介 提供虚拟化列表能力的 Hook,用于解决展示海量数据渲染时首屏渲染缓慢和滚动卡顿问题。 详情可见官网[3],文章源代码可以点击这里[4]。...具体实现 其监听滚动逻辑如下: // 当外部容器的 size 发生变化的时候,触发计算逻辑 useEffect(() => { if (!size?.width || !size?....); if (container) { scrollTriggerByScrollToFunc.current = true; // 滚动 container.scrollTop...= getDistanceTop(index); calculateRange(); } }; 思考与总结 对于高度相对比较确定的情况,我们做虚拟滚动还是相对简单的,但假如高度不确定呢...或者换另外一个角度,当我们的滚动不是纵向的时候,而是横向,该如何处理呢?

    79120
    领券