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

相关文章
|
29天前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
Animation属性 css3为Animation动画提供的几个属性如下: 属性名 属性值 animation-name 指定动画名称,该属性指定一个已有的关键帧定义。 animation-duration 指定动画持续时间。 animation-timing-funtion 指定动画变化速度。 animation-delay 指定动画延迟多长时间才开始执行。 animation-iteration-count 指定动画的循环执行次数。 animation:这是一个复合属性。
79 1
|
前端开发 JavaScript API
Vue 3 新特性:在 Composition API 中使用 CSS Modules
Vue 3 新特性:在 Composition API 中使用 CSS Modules
|
前端开发 JavaScript
前端 css 经典:transition 过渡和 animation 动画
前端 css 经典:transition 过渡和 animation 动画
224 2
|
数据采集 前端开发 JavaScript
HTML + CSS + JS 利用邮编查询 API 实现邮编查询工具
邮政编码是地址信息的重要组成部分,可以帮助快递公司、物流公司等对地址进行快速、准确的识别和派送。因此,邮编查询工具应用在许多业务场景中都有广泛的应用,例如:电商平台、物流公司、金融机构等。通过使用邮编查询 API,我们可以快速实现一个邮编查询工具应用,方便用户查询地址对应的邮政编码,提高业务流程的效率。
950 0
|
存储 JavaScript 前端开发
使用 HTML、CSS、JS 和 API 制作一个很棒的天气 Web 应用程序
使用 HTML、CSS、JS 和 API 制作一个很棒的天气 Web 应用程序
305 0
CSS3 animation 全屏图片切换动画
CSS3 animation 全屏图片切换动画
130 0
CSS3 animation 大海波涛动画
CSS3 animation 大海波涛动画
167 0
CSS3 animation 无缝滚动,鼠标悬浮暂停
CSS3 animation 无缝滚动,鼠标悬浮暂停
175 0
|
人工智能 JavaScript 前端开发
原生JS + HTML + CSS 实现快递物流信息 API 的数据链式展示
全国快递物流查询 API 是一种提供实时、准确、可靠的快递物流信息查询服务的接口。它基于现有的物流信息系统,通过API接口的方式,向用户提供快递物流信息的查询、跟踪、统计等功能。
617 0
原生JS + HTML + CSS 实现快递物流信息 API 的数据链式展示

热门文章

最新文章

  • 1
    React 中如何安装与使用 Tailwind CSS
    190
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    79
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    122
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    106
  • 5
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    73
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    199
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    202
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    104
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    58
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    98