问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Swiperjs插件轮播滑动卡顿优化

发布网友 发布时间:2024-09-26 03:32

我来回答

1个回答

热心网友 时间:2024-11-23 08:36

插件地址:https://swiperjs.com/

场景:

自动轮播几十个item,组件滑动卡顿明显,轮播个数为20个以下表现正常。

原因:

轮播前,渲染所有的swiper-item,dom元素一口气循环挂载到dom树上,当swiper-item个数很多的时候,dom节点内存增大,监听事件占用的内存也逐渐加大,所以出现滑动卡顿现象。

解决方案:主要思想:简化dom结构。方案一:使用api中virtual,开启虚拟Slide功能。但是不适用于我们当前的无限轮播。

NotethataccordingtoVirtualSlidesrealizationitdoesn'tworkwithloopmode,slidesPerColumnmorethan1andslidesPerView:'auto'

方案二:窗口化思想,把没有显示出来的dom元素尽量简化,用空代替。目前采用方案二解决。

具体实现:1、获取当前轮播的index。

on:{slideChange:function(){_this.swiperIndex=this.realIndex;},}

2、加载轮播窗口附近dom元素、数组中最前和最后三个swiper-item,其他用空代替。

<Swiperoptions={options}onSwiperInit={this.onSwiperInit}className={s.slider}wrapperCls={s.wrapper}>{list.slice(0,len).map((item,index)=>{return({(this.swiperIndex<index+6&&this.swiperIndex>6||[len-3,len-2,len-1,0,1,2,3]).includes(index)?<SwiperItemkey={index}><divclassName={cx(s.item,'swiper-lazy')}data-index={index}>renderItem(item,index)</div></SwiperItem>:<SwiperItem/>);})}</Swiper>为什么需要一直保留数组中最前和最后三个swiper-item?

当前loop:true,无限循环模式,Swiper复制了两份swiper-item(slideDuplicateClass),分别添加在原始的swiper-item前后位置,但是slideDuplicateClass只在Swiper初始化的时候渲染,之后动态显示窗口附近的dom元素,无法改变slideDuplicateClass的dom的结构,就会出现轮播到最后一个的时候空屏的情况。

无限循环轮播的核心就在于头尾多出的两张图,从图三再向后滑动,会滑到红色图一,这个时候给用户的感觉就是无缝从最后一张滑动到第一张的,当他滑到占位图一时,我们再瞬间切换到粉色图一(即真正的图一),由于是瞬间变换,用户是感知不到的。

同理,从图一滑到图三也一样。

可视窗口显示三张图片:保留数组中最前和最后三个swiper-item,在初始化的时候slideDuplicateClass就有相应的renderItem。比如当轮播index为最后一个元素9,下一个应该为slideDuplicateClass的index=0元素,解决空屏问题。

参考:

原生js系列之无限循环轮播组件

聊一聊前端性能优化

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美的面包机和面要多久 美的面包机和面的时间要多长 美的面包机怎么用手动操作 如何用美的面包机发面 如何用美的面包机和面 美的面包机如何和面 CDR教程—教你如何使用CorelDRAW复制图形方法 苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 自己手机被远程监控了怎么解除 远程控制手机怎么解除 套期是什么 套期是什么意思 套期保值的套是什么意思 柱子钢筋箍筋上挂的胶圈是什么 说说自己第一份工作工资多少,做的怎么样,学到什么 我的第一份工作(教师) 河南汇银节能技术服务有限公司简介 受疫情影响现在没有上班有工资吗? 传到今天的宋元话本有哪些? 身份证快到期了可以在异地换吗 身份证到期了是否可以异地办理 真捷保健这个网站 http://www.zjbaojian.com/ 是骗人的吗 东西... 颐年卡免费景点有哪些_广东哪里适合老人去玩,旅游 博罗县人民法院受理一审行政案件,作出裁定判决驳回原告行政请求,经多... 徐静代理案件 麻烦问下,我这只派克笔是什么型号,多少钱?有时候感觉写不显,是真的假... 派克钢笔这款是什么型号大概多少钱笔帽上写sonnetfrancen 请问这支派克钢笔是哪个型号的? 用了3年的净水器 换成易开得MQ7+ 不是执拗 这些优势吸引了我 "原来生孩子那么舒服"是什么动画片里的 ...了两个孩子其中有一个是吃肉的还有是吃草的动画片 冬虫夏草,38克要多少钱? 茶叶十克38块 一斤多少钱? 每千克荔枝15元,我有38元,买1斤克荔枝后,还剩多少元钱 500克是3.8元,那么38克是多少钱 国库资金风险管理办法第二章 管理责任制 中央财政国库集中支付会计对账办法第二章 基层经办行与基层预算单位对账... 励志网名男生成熟稳重500个_微信名男成熟男人励志_取个心态好励志的网名... ...那妈妈该叫什么网名好,体现出她有两儿子的网名! 妈妈去世,昨天七七,昨晚梦到妈妈活的好好的,穿着白衬衫,还告诉我她没... 请问从尖沙咀到迪士尼的路线怎么走最好? 请问从尖沙嘴的帝国酒店去迪斯尼怎样坐地铁,八达通在哪里买(坐船去,不... 我想问一下:从尖沙咀的九龙酒店到迪士尼乐园坐地铁怎么转?谢谢 想了解一下贵州有哪些老名酒会参加2022第六届中酒展? 顺安涂布科技(昆山)有限公司怎么样? 太仓顺安货运有限公司怎么样? 湖南顺安科技有限公司怎么样? 苏州顺安商祺服饰有限公司怎么样?