美文网首页
FLIP技术让动画更流畅

FLIP技术让动画更流畅

作者: 时间的溺水者 | 来源:发表于2022-04-09 23:06 被阅读0次

FLIP 技术

FLIP 技术可以帮助你创建轻量级的动画。FLIP是First、Last、Invert和Play四个单词首字母的缩写。

FLIP 将一些性能低下的动画映射为 transform 动画。通过记录元素的两个快照,一个是元素的初始位置(First – F),另一个是元素的最终位置(Last – L),然后对元素使用一个 transform 变换来反转(Invert – I),让元素看起来还在初始位置,最后移除元素上的 transform 使元素由初始位置运动(Play – P)到最终位置。

它就是通过这样一种高性能的方式来动态的改变DOM元素的位置和尺寸,而不需要管它的布局是如何计算或渲染的(比如,height、width、float、绝对定位、Flexbox和Grid等)。

上面这个过程可以拆解为以下四个步骤:

1. First

元素的初始状态,记录当前元素的位置、尺寸、透明度等等的样式信息

2. Last

元素的最终状态,即动画后元素的位置、尺寸、透明度等等的样式信息

  1. Invert

将元素恢复至动画前状态,即相反操作,先计算出从初始状态到最终状态元素发生的改变,比如宽度、高度、透明度等,然后在元素上应用 transform 或 opacity 使这些改变反转,给人一种错觉,即它原来就在初始位置。

这一步比较关键,是此技术的核心,我们举例说明一下:假如现在有一个图片列表,初始有两个图片 img1,img2,然后在列表开头加入新图片 img3,img4,此时 img1 和 img2 就会被挤到后面去。

假设 img1 的初始位置是 (0, 0),被挤下去后的位置是 (100, 100),那么此时浏览器还没有渲染,我们可以在这个时间点通过设置 img1.style.transform = translate(-100px, -100px),让它先 Invert 倒置回位移前的位置。

  1. Play

执行动画,前面的准备工作都做好了,最后就是 Play 了,移除元素上的 transform(将transform置为0或none) 并启用 tansition 相关的动画。

为了便于大家更好的理解FLIP技术的原理,使用下面的流程图向大家展示,或许更易于理解:

FLIP

相关文章

  • FLIP技术让动画更流畅

    前言 此篇文章实际上是《H5页面性能优化之加载篇》的姊妹篇。主要想从CSS 动画的角度给大家介绍下 FLIP 技术...

  • FLIP 动画技术

    如果用 height, width, top, left等CSS属性来做动画,性能要远远差于用 transform...

  • FLIP实现animation动画

    本文代码均放在git仓库 FLIP是什么 首先FLIP并不是一项新技术,可以把它理解为一种实现动画的新的理念或者新...

  • 浅谈swift动画(一)

    动画效果 在viewDidLoad创建初始化位置,在viewwillAppear中执行,可以使动画效果更流畅 动画...

  • jquery2019.3.4滑动动画效果

    jquery2019.3.4滑动动画效果 $("#flip").click(function(){ $("#pa...

  • Flutter七种动画

    翻转的动画效果第三方,很有用: flip_card: ^0.6.0动画原理说明重要重要重要!!!!!!!!!!!...

  • CSS3动画(3):transform实现multi-flip动

    今天给大家带来自动轮播的multi-flip动画,o(▽)o,不知道什么是multi-flip没关系,来张效果图就...

  • Flutter系列八:Flutter动画的使用

    动画能提高用户的使用体验,使APP更流畅。那么在Flutter中如何实现动画以及选择使用什么样的动画呢? 开门见山...

  • 移动H5功能设计反思 测试用例总结

    一、线上页面滑动流畅性测试 1、减少长动画效果(影响流畅) 2、是否自动跳转或者还是让用户自己操作跳转需要推敲 二...

  • Flutter 动画详解系列

    前言:动画会让用户界面感觉更直观、流畅,能改善用户体验。 在Flutter中我们可以轻松实现各种动画类型。目前Fl...

网友评论

      本文标题:FLIP技术让动画更流畅

      本文链接:https://www.haomeiwen.com/subject/iqvbsrtx.html