移动端滑动卡顿应该怎么解决

2021-09-14 14:08发布

14条回答
茄子酱
2楼 · 2021-09-15 09:13

移动端手指触摸屏幕过于频繁,移动端会出现卡顿的现象,下面介绍几种顺畅滚动的解决办法。

一、 -webkit-overflow-scrolling

iOS中独有的属性,属性控制元素在移动设备上是否使用滚动回弹效果.

overflow: scroll;-webkit-overflow-scrolling: touch;//这个属性可以实现,手指离开屏幕会惯性滑动一段距离

-webkit-overflow-scrolling: touch; /* 当手指从触摸屏上移开,会保持一段时间的滚动 ,继续滚动的速度和持续的时间和滚动手势的强烈程度成正比。同时也会创建一个新的堆栈上下文。/
-webkit-overflow-scrolling: auto; /
 当手指从触摸屏上移开,滚动会立即停止 */

二、-webkit-transform: translateZ(0px);

熟悉浏览器渲染过程的小伙伴都知道。
页面绘制的过程分为三个部分:layout、paint和合成。layout负责计算DOM元素的布局关系,paint负责将DOM元素绘制成位图,合成则负责将位图发送给GPU绘制到屏幕上。
当某个DOM元素开启硬件加速之后,浏览器会为此元素单独创建一个“层”。当有单独的层之后,此元素的repaint操作将只需要更新自己,不用影响到别人。
哪些会CSS属性会创建新的层呢?

* It's the root object for the page* It has explicit CSS position properties (relative, absolute or a transform)* It is transparent* Has overflow, an alpha mask or reflection* Has a CSS filter* Corresponds to  element that has a 3D (WebGL) context or an * * * accelerated 2D context* Corresponds to a 
* 根元素* position:absolute/relative ,+z-index(不为auto)* display: flex|inline-flex +z-index(不为auto)* position: fixed* transform 不为 "none"* -webkit-overflow-scrolling:touch* opacity属性值小于 1 的元素* mix-blend-mode属性值不为 "normal"的元素* filter值不为“none”的元素* perspective值不为“none”的元素* isolation 属性被设置为 "isolate"的元素* will-change

三、函数节流

1、每当触发touchmove事件时,先延后执行相应的操作,设置一个定时器。如果在定时期间内又出现新的touchmove事件,则取消刚刚的操作,重新设一个定时器。以保证一连串的触发动作后,最后一个动作才真正的去执行相应的操作。
2、只有第一条显然是不够的,如果用户一直不断的触发,就会一直得不到响应。所以还有设一个固定的时间间隔,记住上一次执行操作的时间,比较本次和上一次执行了操作的时间差,大于固定的时间间隔的话,强制执行。

var previous = null;var atleast = 10;$('body').on('touchmove', function (e) {var now = +new Date();if(!previous){previous = now;}if (now - previous > atleast){method();//要执行的操作// 重置上一次开始时间为本次结束时间previous = now;}else{clearTimeout(timer);timer = setTimeout(function(){checkScroll(e);},200);}}


沃斯泥蝶
3楼 · 2021-09-15 09:18

熟悉像素管道的同学都知道,页面绘制的过程分为三个部分:layout、paint 和合成。layout负责计算 DOM 元素的布局关系,paint 负责将 DOM 元素绘制成位图,合成则负责将位图发送给 GPU 绘制到屏幕上。
当某个 DOM 元素开启硬件加速之后,浏览器会为此元素单独创建一个“层”。当有单独的层之后,此元素的repaint操作将只需要更新自己,不用影响到别人


夏虫语冰
4楼 · 2021-09-15 10:51

刚进界面的时候不要显示动画,加一个假的进度条
有很多进度条都是假的。方式初步加载运行卡顿问题.

嘿呦嘿呦拔萝卜
5楼 · 2021-09-15 16:41

1、清空Safari缓存,用Safari浏览网页时间久了会产生缓存数据,清空Safari缓存来保持它的运行流畅。需要进入【设置】-【Safari】,然后点击“清除历史记录”和“清除cookies和数据”。
2、关闭自动更新自动下载如果iPhone在使用时出现卡顿,可能因为它正后台尝试应用升级,这完全可通过手动的方式执行。想要更改自动升级应用的设置,你需要进入【设置】-【iTunes Store和App Store】自动下载的项目,然后全部关闭。
3、删除旧的无用照片和视频删除不必要的文件是加速手机运行速度的主要方式之一。如果iPhone中存储了几百上千张照片以及很多的视频,可将它们备份到电脑或iCloud,然后在手机中删除。毕竟手机内存空间是有限的,对收藏照片来说,手机真不是个好的地方。

一、 -webkit-overflow-scrolling

iOS中独有的属性,属性控制元素在移动设备上是否使用滚动回弹效果.

-webkit-overflow-scrolling: touch; /* 当手指从触摸屏上移开,会保持一段时间的滚动 ,继续滚动的速度和持续的时间和滚动手势的强烈程度成正比。同时也会创建一个新的堆栈上下文。/
-webkit-overflow-scrolling: auto; / 当手指从触摸屏上移开,滚动会立即停止 */

二、-webkit-transform: translateZ(0px);

熟悉浏览器渲染过程的小伙伴都知道。
页面绘制的过程分为三个部分:layout、paint和合成。layout负责计算DOM元素的布局关系,paint负责将DOM元素绘制成位图,合成则负责将位图发送给GPU绘制到屏幕上。
当某个DOM元素开启硬件加速之后,浏览器会为此元素单独创建一个“层”。当有单独的层之后,此元素的repaint操作将只需要更新自己,不用影响到别人。
三、函数节流
1、每当触发touchmove事件时,先延后执行相应的操作,设置一个定时器。如果在定时期间内又出现新的touchmove事件,则取消刚刚的操作,重新设一个定时器。以保证一连串的触发动作后,最后一个动作才真正的去执行相应的操作。
2、只有第一条显然是不够的,如果用户一直不断的触发,就会一直得不到响应。所以还有设一个固定的时间间隔,记住上一次执行操作的时间,比较本次和上一次执行了操作的时间差,大于固定的时间间隔的话,强制执行。


一个Ai
7楼 · 2021-09-16 14:13

1、比如后台应用程序多,导致手机运行卡顿
可用腾讯手机管家加速小火箭结束后台进程程序
2、一些软件兼容效果不好,或不需要的,会占用大,可卸载
腾讯手机管家——软件管理——卸载
3、读取手机存储的文件过大导致手机卡顿
建议用腾讯手机管家清理文件,释放存储空间;定期的清理缓存
4、旧
还出现,可更新下系统,或软件试试

不吃鱼的猫
8楼 · 2021-09-17 20:11

1、关闭手机后台,释放内存

2、重启手机试试

爱学习的小巴
9楼 · 2021-09-22 09:14

一、 -webkit-overflow-scrolling。二、-webkit-transform: translateZ(0px)。三、函数节流。


相关问题推荐

  • 回答 120

    相对前几年来说,要高上不少了,毕竟入行的人也是越来越多了,基础的工作对应想要参与的人群基数越来越大,但是对于高端人才的需求还是很多,人才还是相对稀缺性的。所以,想要学web或者其他技术也一样,别等,别观望。web前端就业方向特别多包括web前端开发...

  • 回答 25

    相对定位和绝对定位是定位的两种表现形式,区别如下:一、主体不同1、相对定位:是设置为相对定位的元素框会偏移某个距离。2、绝对定位:absolute 脱离文档流,通过 top,bottom,left,right 定位。二、特点不同1、相对定位:在使用相对定位时,无论是否进行移...

  • 抓包是什么意思?2020-04-01 17:36
    回答 7
    已采纳

    抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。抓包可以通过抓包工具来查看网络数据包内容。通过对抓获的数据包进行分析,可以得到有用的信息。目前流行的...

  • 回答 89

    常用的前端框架有Bootstrap框架、React框架、Vue框架、Angular框架、Foundation框架等等

  • 回答 65
    已采纳

    前端是目的就业前景非常不错的一个计算机技术,但是自学的话还是有一定难度的,网络上自学是碎片化的,同时互联网技术跟新换代快,自己的话比较吃力也学习不到最新的技术。

  • SSR 是什么意思?2020-03-20 18:56
    回答 6

    SSR就是一台服务器,可以利用 SSR 在远程的服务器上配置 SSR,使其能够成为 SSR 节点,这样本地电脑或者其它设备利用 SSR 节点实现 VPN 或者远程上网及游戏加速等方面。ShadowsocksR(简称 SSR)是 Shadowsocks 分支,在 Shadowsocks 的基础上增加了一些数据...

  • 回答 52
    已采纳

    计算机培训方向比较多,建议找适合自己的方向选择培训编程类:JAVA、WEB、Python、C/C++、C#等测试类:软件测试运维类:云计算、网络安全设计类:UI设计、3D建模等

  • 回答 11

    1、代码判断xAxis: {type: 'time',splitLine: {show: false},interval: 3600, // 设置x轴时间间隔axisLabel: {formatter: function(value, index) {return liangTools.unix2hm(value)}}},首先要把xAxis 显示类型设置成time,然后设置对应X轴......

  • 回答 8

    HTML5 + CSS + JavaScript 开发 跨平台重用代码 

  • 回答 4

    采用rem单位自动响应,并提供独有栅格化系统快速定义宽高、边距节省css代码量,同时总结各大型移动端网页,提供一套ui颜色搭配规范,尺寸规范,字体规范等。

  • 回答 10

    iView UI、ioni、SUI

  • 回答 6

     jQTouch 

  • 回答 4

    如果只是普通的移动端用vue react 或者dva 如果是要编译成小程序什么的或者混生 就用uni-app(对应vue语法)taro(对应react) 或者纯原生 这个没有限制的,自己怎么舒服怎么来

  • 回答 4

    因为可以运用在网页和小程序的开饭中,而且开源,用着便宜,企业都很喜欢

  • 回答 10

    一、Visual Studio Code下载地址:https://code.visualstudio.com/微软在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目:一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。Visual Stud...

  • 回答 9

    jQuery自带淡入淡出效果 https://www.w3school.com.cn/jquery/jquery_fade.asp 看看这个 

没有解决我的问题,去提问