前端优化-改善滑动流畅度的几类方法

很多时候,在我们写完前端页面以后,在谷歌模拟器上测试iOS和Android测试都没问题、堪称完美。当我们真机测试时,拿起安卓手机一测,哇塞完美十分流畅!然后兴高采烈的换用iOS手机测试,手指轻轻一滑动,我屮艸芔茻怎么回事.......一脸懵逼,怎怎怎怎怎么这么卡,完全是js写的生硬的滑动效果啊,手指离开,滑动立马停下,蓝瘦!!!

骚年莫慌,我这有一锦囊妙计,不妨一试------>>>

首先说一下滑动干涩的原因:

1.滑动的部分不是body的直接子元素。

对于iOS的滑动加速问题,默认只会给body的滚动添加加速效果,在其他的元素下面就不会有这种一泻千里的滑动效果了。

类似于下面这种的结构

<body>
  <div class="container">
     <div class="section></div>
     <div class="section></div>
     <div class="section></div>
     <div class="section></div>
   </div>
</body>

此时,滚动的元素是  .container ,默认是没有滚动加速效果的,如果想要一泻千里的效果咋整呢?简单啊,去掉  .container 层不就得了,完美解决!

擦啊 我  .container是有用的,不能去啊!

好吧,那只能使用第二种方法了

第二种方法就是给  内容滚动的div加个

 -webkit-overflow-scrolling : touch;

拿起手机一试, 啊 ,爽!

2.页面使用了太多的css3动画效果

当页面使用了过多的css3动画效果,那么也会出现这种问题,滑动的好难受,赶紧放下手机缓会儿神。

这种情况下,我们可以通过使用GPU加速来解决这一问题。

当我们的css3动画效果是2D的时候,系统是不会启动GPU加速的,此时,如果我们使用了过多的2D动画,我们手机的CPU大大就会感觉身体被掏空,又要处理逻辑运算,又要运算那么多的变换矩阵,CPU :总有叼前端想害朕!

不必惊慌,此时,只要我们给CPU找个帮手,帮他计算那些大量的变换矩阵,CPU就会很开心啦,你说是不,开心到飞起呢。

如何让CPU来做这些工作呢?

只要我们的变换是3D的,那么GPU就会屁颠屁颠的来帮忙啦,就算不是3D的,我们也要伪装成3D的变换,哈哈哈,骗取劳动力比如 我们使用 transform:scale(2,2) ; 的时候,可以写成transform:scale3d(2,2,1) ;这样,我们Z轴是没有变化的,但是GPU还是来帮忙啦。

还有一种方法是通过css给要变换的元素添加 will-change:transform ;属性,就是在变换前,提前告诉设备,注意了啊,我要变形啦!让系统提前做好准备,这样在变形的时候,系统就不会束手无策啦,也就不会那么卡啦。

这个属性也是不能滥用,俗话说适可而止,滥用伤身。

(完)

但是 GPU来帮忙不是白帮的,就算不给前,一天三顿饭总得管的,而且GPU饭量还不小,这样就很消耗用户的电量,所以要适可而止,不能见一个加一个,这样就不好啦

时间: 2024-10-12 09:24:46

前端优化-改善滑动流畅度的几类方法的相关文章

让页面滑动流畅得飞起的新特性:Passive Event Listeners

版权声明:本文由陈志兴原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/153 来源:腾云阁 https://www.qcloud.com/community 在不久前的Google I/O 2016 Mobile Web Talk中,Google公布了一个让页面滑动更流畅的新特性Passive Event Listeners.该特性目前已经集成到Chrome51版本中.Chrome51上使用Passive Event L

UI的流畅度优化

Android中所有的界面绘制工作都是在UI线程中进行的,提高UI流畅度的最核心根本在于释放UI线程.即:不在主线程中做耗时的操作. 很多人都知道,耗时的操作要放到子线程中去做,比如访问网络,比如读写sd卡.像这类操作大家都会很自然的想到使用子线程来完成耗时的操作,等操作结束之后,再通过Handler通知主线程进行界面的更新.这是非常正确的方法.但是有一类方法,它必须得运行在在UI线程中,就是布局文件的加载.如果这类方法花的时间太多了,也是会对流畅度产生很大的影响.今天我们就来讲讲布局文件的优化

[转]改善用户体验 Web前端优化策略总结

前端是庞大的,包括HTML.CSS.Javascript.Image.Flash等等各种各样的资源.前端优化是复杂的,针对方方面面的资源都有不同的方式.那么,前端优化的目的是什么? 1. 从用户角度而言,优化能够让页面加载得更快.对用户的操作响应得更及时,能够给用户提供更为友好的体验. 2. 从服务商角度而言,优化能够减少页面请求数.或者减小请求所占带宽,能够节省可观的资源. 总之,恰当的优化不仅能够改善站点的用户体验并且能够节省相当的资源利用.前端优化的途径有很多,按粒度大致可以分为两类,第一

Android 滚动RecyclerView加载图片时的流畅度优化

实现:使用onScrollStateChanged回调检测滚动状态,并在RecyclerViewAdapter内部设置类似isScrolling的状态值来控制网络图片的加载. 下面是代码举例: // BaseAdapter中添加如下代码 public abstract class BaseRecyclerViewAdapter<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder> { …… protected boolea

Android流畅度测试

Android流畅度测试 测试方法一:系统自带-开发者模式 测试方法二:FPS Meter测试安卓帧数 H5页面加载速度:window.performance.timing 测试方法一:系统自带-开发者模式 实际上,为了方便开发者测试,安卓本身就内置了流畅度检测的功能.不过,这需要我们开启隐藏的开发者选项.如果你在用原生系统,那么开启开发者选项的方法很简单,进入到设置菜单“关于手机”页面,点击数次“版本号”,即可开启开发者选项.如果用的是其他ROM,方法也许有所不同,比如说魅族的Flyme开启开

【MIG专项测试组】如何准确评测Android应用的流畅度?

转自 腾讯Bugly 叶方正,2008年加入腾讯,就职于无线研发部[专项测试组].曾经负责多个产品的性能优化工作,积累大量的移动终端平台优化以及评测经验. 怎样获取SM值? 前文我们分析了通过测量应用的帧率FPS并不能准确评价App的流畅度(如何量化Android应用的“卡”?流畅度原理&定义篇),FPS较低并不能代表当前App在UI上界面不流畅,而1s内VSync这个Loop运行了多少次更加能说明当前App的流畅程度. 那么我们可以直接在App代码中通过Choreographer的回调Fram

这么多前端优化点你都记得住吗?

围绕前端的性能多如牛毛,涉及到方方面面,以我我们将围绕 PC 浏览器和移动端浏览器的优化策略进行罗列 注意,是罗列不是展开,遇到不会不懂的点还请站外扩展 开车速度有点快,坐稳了. tips : 这么多前端优化点你都记得住吗?反正我是收藏起来备查的. PC 浏览器前端优化策略 PC 端优化的策略很多,如 YSlow(YSlow 是 Yahoo 发布的一款 Firefox 插件,现 Chrome 也可安装,可以对网站的页面性能进行分析,提出对该页面性能优化的建议)原则,或者 Chrome 自带的 A

移动端浏览器前端优化

相对于桌面端浏览器,移动端Web浏览器上有一些较为明显的特点:设备屏幕较小.新特性兼容性较好.支持一些较新的HTML5和CSS3特性.需要与Native应用交互等.但移动端浏览器可用的CPU计算资源和网络资源极为有限,因此要做好移动端Web上的优化往往需要做更多的事情.首先,在移动端Web的前端页面渲染中,桌面浏览器端上的优化规则同样适用,此外针对移动端也要做一些极致的优化来达到更好的效果.需要注意的是,并不是移动端的优化原则在桌面浏览器端就不适用,而是由于兼容性和差异性的原因,一些优化原则在移

&lt;转&gt;Android App性能评测分析-流畅度篇

1.前言 在手机App竞争越来越激烈的今天,Android App的各项性能特别是流畅度不如IOS,安卓基于java虚拟机运行,触控响应的延迟和卡顿比IOS系统严重得多.一些下拉上滑.双指缩放快速打字等操作,安卓的流畅度都表现比较糟糕,但是,对于App使用过程是否流畅,一直没有一个可靠的指标将用户的客观感受和数据一一对应.虽然之前有FPS(每秒帧数)作为游戏或视频类App的性能指标,但对于那些界面更新不多的App来说,仍不是一个合适的衡量数据.以下会根据实际app性能测试案例,展开进行app性能