GithubHelp home page GithubHelp logo

acusti / web-animations-js Goto Github PK

View Code? Open in Web Editor NEW

This project forked from web-animations/web-animations-js

0.0 3.0 0.0 1.93 MB

JavaScript implementation of the Web Animations API

Home Page: http://web-animations.github.io

License: Apache License 2.0

Shell 0.49% JavaScript 75.00% HTML 24.26% CSS 0.25%

web-animations-js's Introduction

Quick Start

To provide native Chrome Web Animation features (Element.animate and Playback Control) in other browsers, use web-animations.min.js. To explore all of the proposed Web Animations API, use web-animations-next.min.js.

What is Web Animations?

Web Animations is a new JavaScript API for driving animated content on the web. By unifying the animation features of SVG and CSS, Web Animations unlocks features previously only usable declaratively, and exposes powerful, high-performance animation capabilities to developers.

For more details see the W3C specification.

What is the polyfill?

The polyfill is a JavaScript implementation of the Web Animations API. It works on modern versions of all major browsers. For more details about browser support see https://www.polymer-project.org/resources/compatibility.html.

Getting Started

Here's a simple example of an animation that scales and changes the opacity of a <div> over 0.5 seconds. The animation alternates producing a pulsing effect.

<script src="web-animations.min.js"></script>
<div class="pulse" style="width:150px;">Hello world!</div>
<script>
    var elem = document.querySelector('.pulse');
    var animation = elem.animate([
        {opacity: 0.5, transform: "scale(0.5)"},
        {opacity: 1.0, transform: "scale(1)"}
    ], {
        direction: 'alternate',
        duration: 500,
        iterations: Infinity
    });
</script>

Web Animations supports off-main-thread animations, and also allows procedural generation of animations and fine-grained control of animation playback. See http://web-animations.github.io for ideas and inspiration!

Native Fallback

When the polyfill runs on a browser that implements Element.animate and Animation Playback Control it will detect and use the underlying native features.

Different Build Targets

web-animations.min.js

Tracks the Web Animations features that are supported natively in browsers. Today that means Element.animate and Playback Control in Chrome. If you’re not sure what features you will need, start with this.

web-animations-next.min.js

Contains all of web-animations.min.js plus features that are still undergoing discussion or have yet to be implemented natively.

web-animations-next-lite.min.js

A cut down version of web-animations-next, it removes several lesser used property handlers and some of the larger and less used features such as matrix interpolation/decomposition.

Build Target Comparison

web-animations web-animations-next web-animations-next-lite
Size (gzipped) 12.5kb 14kb 10.5kb
Element.animate
Timing input (easings, duration, fillMode, etc.) for animation effects
Playback control
Support for animating lengths, transforms and opacity
Support for animating other CSS properties 🚫
Matrix fallback for transform animations 🚫
KeyframeEffect constructor 🚫
Simple GroupEffects & SequenceEffects 🚫
Custom Effects 🚫
Timing input (easings, duration, fillMode, etc.) for groups 🚫 🚫* 🚫
Additive animation 🚫* 🚫* 🚫
Motion path 🚫* 🚫* 🚫
Modifiable keyframe effect timing 🚫 🚫* 🚫*
Modifiable group timing 🚫 🚫* 🚫*
Usable inline style** 🚫

* support is planned for these features. ** see inline style caveat below.

Caveats

Some things won’t ever be faithful to the native implementation due to browser and CSS API limitations. These include:

Inline Style

Inline style modification is the mechanism used by the polyfill to animate properties. Both web-animations and web-animations-next incorporate a module that emulates a vanilla inline style object, so that style modification from JavaScript can still work in the presence of animations. However, to keep the size of web-animations-next-lite as small as possible, the style emulation module is not included. When using this version of the polyfill, JavaScript inline style modification will be overwritten by animations. Due to browser constraints inline style modification is not supported on iOS 7 or Safari 6 (or earlier versions).

Prefix handling

The polyfill will automatically detect the correctly prefixed name to use when writing animated properties back to the platform. Where possible, the polyfill will only accept unprefixed versions of experimental features. For example:

var effect = new KeyframeEffect(elem, {"transform": "translate(100px, 100px)"}, 2000);

will work in all browsers that implement a conforming version of transform, but

var effect = new KeyframeEffect(elem, {"-webkit-transform": "translate(100px, 100px)"}, 2000);

will not work anywhere.

API and Specification Feedback

File an issue on GitHub: https://github.com/w3c/web-animations/issues/new. Alternatively, send an email to [email protected] with subject line “[web-animations] … message topic …” (archives).

Polyfill Issues

Report any issues with this implementation on GitHub: https://github.com/web-animations/web-animations-next/issues/new.

Breaking changes

When we make a potentially breaking change to the polyfill's API surface (like a rename) we will, where possible, continue supporting the old version, deprecated, for three months, and ensure that there are console warnings to indicate that a change is pending. After three months, the old version of the API surface (e.g. the old version of a function name) will be removed. If you see deprecation warnings you can't avoid it by not updating.

We also announce anything that isn't a bug fix on [email protected].

web-animations-js's People

Contributors

rjwright avatar dstoc avatar shans avatar alancutter avatar tim-loh avatar samthor avatar lisamuel avatar mithro avatar jklein24 avatar dan-tilley avatar nevir avatar cibernox avatar rasteiner avatar samuelli avatar tombyrer avatar

Watchers

Andrew Patton avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.