卖座网站影院界面:优化长列表的滑动流畅度方案
创始人
2024-04-19 07:24:28
0

关键点1:优化长列表的滑动流畅度

问题:在长列表中,向下滑动时,为了提高用户的使用感受,这个滑动一般都会做的很流畅。但是在网速不快的情况下,它自然会卡顿,所以为了优化网速慢带来的卡顿现象,提供了一种办法。

图示:长列表滑动:

 

解决办法:

betterScroll工具:

  • 这个工具主要完成的功能是可以实现页面中的拖动滚动拉动属性等功能;
  • 使用方法参考地址:https://ustbhuangyi.github.io/better-scroll/doc/zh-hans/

使用方法:

(1)给列表ul标签外面加上div盒子,添加class属性,给出盒子高度和溢出隐藏属性;

原因是:使用这个 betterScroll工具 必须要有自己的高度,自己盒子的滚动条,而不是靠内容撑开的滚动条,这样这个盒子才能在我们的控制范围之内,浏览器撑开的滚动条我们也控制不了;

注意:

  • 一定要设置盒子高度;盒子高度的设置,可以通过整个页面的高度减去下面电影列的高度,就可以了。这样设置盒子的高度好处是能够适应每一个移动端的尺寸。
  • 要设置溢出隐藏:这个隐藏隐藏的是ul的数据,ul数据撑开的高度是22649px高,因为盒子有高度,然后溢出隐藏显示,就可以控制整个滚动。

关于盒子的高度计算问题:(重点之一)

盒子的高度=页面的高度-底部电影选项卡的高度

误区:不能直接用rem计算,即页面高度667px-电影高度50px,然后再换算成rem,图示:

不能按照上面计算的原因是:我们是按照width宽度来衡量rem的,用在高度上就会出问题;

新的计算方法:动态计算高度

页面高度 = document.documentElement.clientHeight

电影高度 = document.querySelector('footer').offsetHeight:通过获取节点来获取这个高度,footer标签是电影,影院,我的外面包裹的标签

代码:

 给div标签动态添加高度属性,高度初始值为0px,然后再mounted里动态计算高度。

图示:ul数据高度:

 代码:

  • {{data.name}}
    {{data.address}}
    ¥{{data.lowPrice/100}}起
    距离未知

(2) 下载这个模块、引入模块

下载模块:(先用上面这个下载,出错了再用第二个下载)

npm install --save better-scroll

或者 

npm install --save better-scroll --legacy-peer-deps

引入模块:

import BetterScroll from 'better-scroll'

(3)初始化:

new BetterScroll('.box')
  •  注意:要在列表渲染完再初始化,不然会出现初始化过早的问题,

所以可在 this.$nextTick 里面初始化,见代码:

mounted () {http({url: '/gateway?cityId=310100&ticketFlag=1&k=1342451',headers: {'X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"16661470114057618813288449","bc":"310100"}','X-Host': 'mall.film-ticket.cinema.list'}}).then(res => {//   console.log(res.data.data.cinemas)this.cinemaList = res.data.data.cinemasthis.$nextTick(() => {//   初始化,要等li标签都渲染完毕了,才可初始化new BetterScroll('.box')})})}

效果:向下拉或者向上拉有惯性效果

图示:

原理是:在拉动的过程中给ul标签加上了动画,用的是c3的知识,用上c3可以调用起来GPU充分发挥出显卡的性质来,c3中的transform能利用好事物渲染的引擎,至少CPU被合理使用上去,这样用户体验会有很大的提高。

图示:看右边ul标签里的transform属性:

加上滚动条: 

  • 上面的效果,发现没有滚动条出现,那就会不清楚当前滚动到哪里了,如何加滚动条:

 (1)初始化时,传第二个参数,是一个对象{},属性scrollbar

new BetterScroll('.box', {// 出现滚动条scrollbar: {fade: true}})

(2)给box属性增加 相对定位

.box{height: 300px;overflow: hidden;// 限制滚动条的位置position:relative;}
  • 如果不加相对定位,滚动条就会超出盒子滚动,不会相对于box盒子滚动,所以要加上,而且只能加相对定位;

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...