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

关键点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盒子滚动,所以要加上,而且只能加相对定位;

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
tag是什么意思 tab是什么... 一、B端基础控件的认识控件一词,直译的话可以翻译成 “用来控制的元件”,是我们对 B 端系统进行信息...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
tag是什么意思 tab是什么... 一、B端基础控件的认识控件一词,直译的话可以翻译成 “用来控制的元件”,是我们对 B 端系统进行信息...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...