移动端吸顶、动画、浏览器层模型实战分析

问题归纳顶部通知公告条自动吸顶判断点击自动展开动画,兼容Android与ios页面中的图标与文字对齐(垂直居中对齐、水平居中对齐)移动端居中、间距自适配h5页面自定义native顶部导航条知识点归纳惯性滑动的事件触发机制iscroll模拟滚动,滚动事件在安卓中未被触发requestAnimateFrame(fn),优化动画性能position:sticky; 滚...
摘要由CSDN通过智能技术生成

问题归纳

  1. 顶部通知公告条自动吸顶判断

  2. 点击自动展开动画,兼容Android与ios

  3. 页面中的图标与文字对齐(垂直居中对齐、水平居中对齐)

  4. 移动端居中、间距自适配

  5. h5页面自定义native顶部导航条

知识点归纳

  • 惯性滑动的事件触发机制

  • iscroll模拟滚动,滚动事件在安卓中未被触发

  • requestAnimateFrame(fn),优化动画性能

  • position:sticky; 滚动浮屏显示

  • transition:height 1s; 安卓卡顿

  • box、flexbox、flex布局,兼容性差异

  • rem移动端适配方案,font-size计算

  • JSBridge h5与原声native的通信

展开收缩

这里写图片描述

在移动端要求实现点击后,展开或收缩内容区域,承载app在ios系统中使用的webkit 602.4.6内核,安卓中使用的U3 1.0.0.100内核。

尝试利用css3的动画效果,利用 transition:height .5s 进行高度过渡,但是该效果在安卓机上出现了明显的卡顿现象。

在硬件的配置上来说,用于测试的安卓机并不差,因此猜测出现卡顿现象的原因在于内核的渲染机制上。

主线程与合并线程

在浏览器中,包含这三个线程:

  1. JS引擎线程

  2. 事件触发线程

  3. GUI渲染线程

其中GUI渲染与JS执行引擎是互斥的,也就是存在js执行阻塞界面渲染的情况。

在这三个线程之上,浏览器拥有两个重要的执行线程来渲染页面:

  1. 主线程 (Main Thread)

  2. 合并线程 (Compositor Thread)

主线程(Main Thread)主要负责Js的执行、布局样式的计算以及绘制(paint,将图像层的内容绘制到位图中),故应包含JS引擎和事件触发线程。

合并线程(Compositor Thread)利用GPU来绘制位图到屏幕以及对位图的显示进行计算判断,故应包含GUI渲染线程。

一个简单的滑动例子便能说明其中的区别。

这里写图片描述

用户在滑动时,合并线程将直接利用GPU对之前的位图进行计算和展示,并不需要主线程的参与,而若是绑定了事件处理器,则会如下图所示。

这里写图片描述

主线程会参与执行对应的事件处理函数,合并线程会等待函数执行完成后再继续工作,显示设备刷新频率一般在50~60,那么60fps是能够得到最佳的动画显示,也就是说处理函数必须是在 1000 / 60 = 16.67ms之内完成ÿ

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值