W3C发布CSS ANIMATION WORKLET API的草案

简介: W3C发布CSS ANIMATION WORKLET API的草案

640.jpg

2019年6月25日,W3C正式发布了首个关于CSS ANIMATION WORKLET API的工作草案。


Animation Worklet API 可以让开发者通过脚本的方式来实现一系列动画效果,并且这些动画效果是由一个单独的线程来处理的,不会占用主线程


通常情况下,我们在网页中实现动画有下面两种方式:


  1. setTimeout 、setInterval、requestAnimationFrame
  2. CSS


第一种方式,代码都是在主线程运行的,容易阻塞主线程,造成掉帧等问题,影响用户体验。

第二种方式,CSS可以实现更流畅的动画,但是CSS代码写起来局限太多。

所以,Animation Worklet API诞生了。


来看一下W3C的示例代码:


// In document scope.<div id='scrollingContainer'>  <div id='header' style='height: 150px'></div>  <div id='avatar'><img></div></div>
<script>await CSS.animationWorklet.addModule('twitter-header-animator.js');const animation = new WorkletAnimation(    'twitter-header',    [new KeyframeEffect($avatar,  /* scales down as we scroll up */                    [{transform: 'scale(1)'}, {transform: 'scale(0.5)'}],                    {duration: 1000, iterations: 1}),    new KeyframeEffect($header, /* loses transparency as we scroll up */                    [{opacity: 0}, {opacity: 0.8}],                    {duration: 1000, iterations: 1})],    new ScrollTimeline({      scrollSource: $scrollingContainer,      orientation: 'block',      timeRange: 1000,      startScrollOffset: 0,      endScrollOffset: $header.clientHeight}));animation.play();
// Since this animation is using a group effect, the same animation instance// is accessible via different handles: $avatarEl.getAnimations()[0], $headerEl.getAnimations()[0]</script>


// Inside AnimationWorkletGlobalScope.registerAnimator('twitter-header', class HeaderAnimator extends StatelessAnimator {  constructor(options) {    this.timing_ = new CubicBezier('ease-out');  }
  animate(currentTime, effect) {    const scroll = currentTime;  // scroll is in [0, 1000] range
    // Drive the output group effect by setting its children local times individually.    effect.children[0].localTime = scroll;    effect.children[1].localTime = this.timing_(clamp(scroll, 0, 500));  }});
function clamp(value, min, max) {  return Math.min(Math.max(value, min), max);}


关于Animation Worklet API的更多内容,可到W3C查看:

https://www.w3.org/blog/news/archives/7830

相关文章
|
7月前
CSS3 animation
CSS3 animation
25 0
|
4月前
|
存储 JavaScript 前端开发
使用 HTML、CSS、JS 和 API 制作一个很棒的天气 Web 应用程序
使用 HTML、CSS、JS 和 API 制作一个很棒的天气 Web 应用程序
68 0
|
12月前
|
数据采集 前端开发 JavaScript
HTML + CSS + JS 利用邮编查询 API 实现邮编查询工具
邮政编码是地址信息的重要组成部分,可以帮助快递公司、物流公司等对地址进行快速、准确的识别和派送。因此,邮编查询工具应用在许多业务场景中都有广泛的应用,例如:电商平台、物流公司、金融机构等。通过使用邮编查询 API,我们可以快速实现一个邮编查询工具应用,方便用户查询地址对应的邮政编码,提高业务流程的效率。
283 0
|
7月前
CSS3 animation 全屏图片切换动画
CSS3 animation 全屏图片切换动画
32 0
|
7月前
CSS3 animation 大海波涛动画
CSS3 animation 大海波涛动画
29 0
|
7月前
CSS3 animation 无缝滚动,鼠标悬浮暂停
CSS3 animation 无缝滚动,鼠标悬浮暂停
40 0
|
9月前
CSS3动画属性之Animation
CSS3动画属性之Animation
66 0
|
人工智能 JavaScript 前端开发
原生JS + HTML + CSS 实现快递物流信息 API 的数据链式展示
全国快递物流查询 API 是一种提供实时、准确、可靠的快递物流信息查询服务的接口。它基于现有的物流信息系统,通过API接口的方式,向用户提供快递物流信息的查询、跟踪、统计等功能。
251 0
原生JS + HTML + CSS 实现快递物流信息 API 的数据链式展示
|
前端开发 JavaScript API
CSS 动画与 Web 动画 API
JavaScript 中有一个用于动画的原生 API,称为 Web Animations API
125 0
CSS 动画与 Web 动画 API
|
前端开发 JavaScript 容器
重学前端 42 # 用代码挖掘W3C中的CSS属性
重学前端 42 # 用代码挖掘W3C中的CSS属性
119 0
重学前端 42 # 用代码挖掘W3C中的CSS属性