uni-app 高性能的左右长列表,tab列表
前言:笔者一名业余的码农,只是爱好而已。刚从html转到uni-app这边,vue也是第一次写。
效果:
像这个可以左右切换的长列表,上面的tab倒是很好实现,直接使用官方的-view组件就可以了。
但是下方的长列表,要实现并且保证高性能,可不是一件容易事。
下方内容列表一开始,我是考虑使用组件的,但是组件的高度始终是固定的,即便你动态修改了。但依旧是固定的高度,以后内容变化的话,都得重新获取高度。所以排除掉
-view组件的话,官方文档早就说明不适合做长列表了。
看来就剩下插件市场的list组件了,但是我没用过,但是我可以预见的是,list组件,扩展性低,复杂(相较于我这种第一次写vue的),性能也就那样,至少在HTML端的性能是不会很好的
所以就自己写一个,原理就是直接使用view,父view设置css属性为: -flex;。大致如下图
然后切换使用css平移动画 :(0); 性能非常的好。缺点就是要实现手势左右滑动进行切换得自己写js,不过也不难。
另外上面的tab。那条橙色的线,位置和宽度是会变化的,一开始使用的是left 和 width,来实现。然后发现在列表内容很多的情况下,性能很差,所以就改成了css的平移和缩放动画,来实现偏移和宽度变化(性能很好)。
上面tab被点击之后也会居中显示
下面是具体代码
根目录中创建文件夹(是自定义组件的存放地),文件夹中创建list.vue文件,文件内容如下
{{item}}
{{index}}1 {{index}}2 3 4 5 6 7 8 9 10 11 12 13 14 15
然后在你需要的地方引入这个文件
调用组件
性能没问题,在13个分类列表里面,每个列表中创建93个商品,切换过程没有一点点卡顿