| Index: third_party/polymer/components/web-animations-js/docs/examples.md
|
| diff --git a/third_party/polymer/components/web-animations-js/docs/examples.md b/third_party/polymer/components/web-animations-js/docs/examples.md
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7957a29c6492cd8cb3911ed52a3d3739b2a3f1d1
|
| --- /dev/null
|
| +++ b/third_party/polymer/components/web-animations-js/docs/examples.md
|
| @@ -0,0 +1,241 @@
|
| +#Examples of using Web Animations
|
| +
|
| +Property indexed keyframes syntax
|
| +---------------------------------
|
| +- Each CSS property specifies its keyframe values as a list, different properties may have differently sized lists.
|
| +- The `easing` property applies its timing function to all keyframes.
|
| +
|
| +[**Live demo**](http://jsbin.com/qiyeriruru/edit?js,output)
|
| +```javascript
|
| +element.animate({
|
| + transform: [
|
| + 'scaleY(0.5)',
|
| + 'scaleX(0.5)',
|
| + 'scaleY(0.5)',
|
| + ],
|
| + background: [
|
| + 'red',
|
| + 'blue',
|
| + 'orange',
|
| + 'red',
|
| + ],
|
| + easing: 'ease-in-out',
|
| +}, {
|
| + duration: 2000,
|
| + iterations: Infinity,
|
| +});
|
| +```
|
| +
|
| +Keyframe list syntax
|
| +--------------------
|
| +- Keyframes can be specified as a list of multiple CSS property values.
|
| +- Individual keyframes can be given specific offsets and easings.
|
| +- Not all properties need to be specified in every keyframe.
|
| +- Offsets are implicitly distributed if not specified.
|
| +
|
| +[**Live demo**](http://jsbin.com/yajatoyere/edit?js,output)
|
| +```javascript
|
| +element.animate([
|
| + {
|
| + background: 'red',
|
| + transform: 'none',
|
| + easing: 'ease-out',
|
| + },
|
| + {
|
| + offset: 0.1,
|
| + transform: 'translateY(100px)',
|
| + easing: 'ease-in-out',
|
| + },
|
| + {
|
| + offset: 0.2,
|
| + transform: 'translate(100px, 100px)',
|
| + easing: 'ease-in-out',
|
| + },
|
| + {
|
| + offset: 0.4,
|
| + transform: 'translateX(100px)',
|
| + easing: 'ease-out',
|
| + },
|
| + {
|
| + background: 'blue',
|
| + transform: 'none',
|
| + },
|
| +], {
|
| + duration: 4000,
|
| + iterations: Infinity,
|
| +});
|
| +```
|
| +
|
| +Timing parameters
|
| +-----------------
|
| +- Web Animations inherits many of its timing parameters from CSS Animations.
|
| +- See the [specification](http://w3c.github.io/web-animations/#animationeffecttimingreadonly) for details on each parameter.
|
| +
|
| +[**Live demo**](http://jsbin.com/dabehipiyo/edit?js,output)
|
| +```javascript
|
| +element.animate({
|
| + transform: ['none', 'translateX(100px)'],
|
| + background: ['green', 'lime'],
|
| +}, {
|
| + // Apply effect during delay.
|
| + fill: 'backwards',
|
| +
|
| + // Delay starting by 500ms.
|
| + delay: 500,
|
| +
|
| + // Iterations last for 2000ms.
|
| + duration: 2000,
|
| +
|
| + // Start at 25% through an iteration.
|
| + iterationStart: 0.25,
|
| +
|
| + // Run for 2 iterations.
|
| + iterations: 2,
|
| +
|
| + // Play every second iteration backwards.
|
| + direction: 'alternate',
|
| +
|
| + // Stop animating 500ms earlier.
|
| + endDelay: -500,
|
| +
|
| + // The timing function to use with each iteration.
|
| + easing: 'ease-in-out',
|
| +});
|
| +```
|
| +
|
| +Playback controls
|
| +-----------------
|
| +- element.animate() returns an Animation object with basic playback controls.
|
| +- See the [specification](http://w3c.github.io/web-animations/#the-animation-interface) for details on each method.
|
| +
|
| +[**Live demo**](http://jsbin.com/kutaqoxejo/edit?js,output)
|
| +```javascript
|
| +var animation = element.animate({
|
| + transform: ['none', 'translateX(200px)'],
|
| + background: ['red', 'orange'],
|
| +}, {
|
| + duration: 4000,
|
| + fill: 'both',
|
| +});
|
| +animation.play();
|
| +animation.reverse();
|
| +animation.pause();
|
| +animation.currentTime = 2000;
|
| +animation.playbackRate += 0.25;
|
| +animation.playbackRate -= 0.25;
|
| +animation.finish();
|
| +animation.cancel();
|
| +```
|
| +
|
| +Transitioning states with element.animate()
|
| +-------------------------------------------
|
| +- This is an example of how to animate from one state to another using Web Animations.
|
| +
|
| +[**Live demo**](http://jsbin.com/musufiwule/edit?js,output)
|
| +```javascript
|
| +var isOpen = false;
|
| +var openHeight = '100px';
|
| +var closedHeight = '0px';
|
| +var duration = 300;
|
| +
|
| +button.addEventListener('click', function() {
|
| + // Prevent clicks while we transition states.
|
| + button.disabled = true;
|
| + button.textContent = '...';
|
| +
|
| + // Determine where we're animation from/to.
|
| + var fromHeight = isOpen ? openHeight : closedHeight;
|
| + var toHeight = isOpen ? closedHeight : openHeight;
|
| +
|
| + // Start an animation transitioning from our current state to the final state.
|
| + var animation = element.animate({ height: [fromHeight, toHeight] }, duration);
|
| +
|
| + // Update the button once the animation finishes.
|
| + animation.onfinish = function() {
|
| + isOpen = !isOpen;
|
| + button.textContent = isOpen ? 'Close' : 'Open';
|
| + button.disabled = false;
|
| + };
|
| +
|
| + // Put our element in the final state.
|
| + // Inline styles are overridden by active animations.
|
| + // When the above animation finishes it will stop applying and
|
| + // the element's style will fall back onto this inline style value.
|
| + element.style.setProperty('height', toHeight);
|
| +});
|
| +```
|
| +
|
| +Generating animations
|
| +---------------------
|
| +- The Javascript API allows for procedurally generating a diverse range of interesting animations.
|
| +
|
| +[**Live demo**](http://jsbin.com/xolacasiyu/edit?js,output)
|
| +```html
|
| +<!DOCTYPE html>
|
| +<script src="https://rawgit.com/web-animations/web-animations-js/master/web-animations.min.js"></script>
|
| +
|
| +<style>
|
| +#perspective {
|
| + margin-left: 100px;
|
| + width: 300px;
|
| + height: 300px;
|
| + perspective: 600px;
|
| +}
|
| +
|
| +#container {
|
| + width: 300px;
|
| + height: 300px;
|
| + line-height: 0;
|
| + transform-style: preserve-3d;
|
| +}
|
| +
|
| +.box {
|
| + display: inline-block;
|
| + width: 20px;
|
| + height: 20px;
|
| + background: black;
|
| +}
|
| +</style>
|
| +
|
| +<div id="perspective">
|
| + <div id="container"></div>
|
| +</div>
|
| +
|
| +<script>
|
| +container.animate({
|
| + transform: [
|
| + 'rotateX(70deg) rotateZ(0deg)',
|
| + 'rotateX(70deg) rotateZ(360deg)',
|
| + ],
|
| +}, {
|
| + duration: 20000,
|
| + iterations: Infinity,
|
| +});
|
| +
|
| +for (var y = -7; y <= 7; y++) {
|
| + for (var x = -7; x <= 7; x++) {
|
| + var box = createBox();
|
| + box.animate({
|
| + transform: [
|
| + 'translateZ(0px)',
|
| + 'translateZ(20px)',
|
| + ],
|
| + opacity: [1, 0],
|
| + }, {
|
| + delay: (x*x + y*y) * 20,
|
| + duration: 2000,
|
| + iterations: Infinity,
|
| + direction: 'alternate',
|
| + easing: 'ease-in',
|
| + });
|
| + }
|
| +}
|
| +
|
| +function createBox() {
|
| + var box = document.createElement('div');
|
| + box.className = 'box';
|
| + container.appendChild(box);
|
| + return box;
|
| +}
|
| +</script>
|
| +```
|
|
|