2.57.0 • Published 3 days ago

@douyinfe/semi-animation v2.57.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 days ago

Provides basic JS animation engine:

  • Simulate animation changes based on interpolation,the performance is more natural
  • Support the definition of various easing functions
  • Provides a complete life cycle hook and operation method, allowing developers to freely control the animation

Install

npm install @douyinfe/semi-animation

Usage

Animation

semi-animation provides a class called Animation . It has a complete life cycle hook and control method to support operating animation like audio and video.

  • Use in JS
import { Animation } from '@douyinfe/semi-animation';

const div = document.createElement('span');
div.style.display = 'inline-block';
document.body.appendChild(div);

const animation = new Animation({
    from: { value: 0 },
    to: { value: 1 },
});

animation.on('frame', props => {
    const num = props.value.toFixed(2);
    div.style.transform = `scale(${num})`;
    div.innerText = num;
});
  • Use in React
import { Animation } from '@douyinfe/semi-animation';
import { Component } from 'react';

class App extends Component {
    constructor(props) {
        super(props);
        this.state = { value: 0 };

        this.animation = new Animation({
            from: { value: 0 },
            to: { value: 1 },
        });

        this.animation.on('frame', props => {
            this.setState({ value: props.value.toFixed(2) });
        });
    }

    componentDidMount() {
        this.animation.start();
    }

    componentWillUnmount() {
        this.animation.destroy();
    }

    render() {
        const { value } = this.state;

        return <div style={{ display: 'inline-block', transform: `scale(${value})` }}>{value}</div>;
    }
}
  • Use in Vue
<template>
    <div :style="{ transform: `scale(${value})`, display: 'inline-block' }">{{value}}</div>
</template>

<script>
    import { Animation } from '@douyinfe/semi-animation';

    export default {
        data() {
            return { value: 0 };
        },
        created() {
            this.animation = new Animation({
                from: { value: 0 },
                to: { value: 1 },
            });

            this.animation.on('frame', props => {
                this.value = props.value;
            });
        },
        mounted() {
            this.animation.start();
        },
        beforeDestroy() {
            this.animation.destroy();
        },
    };
</script>

Show results:

npm.io

API

new Animation({ ...props }, { ...config });

props

Prop NameTypeRequiredDefaultDescription
fromObjectYInitial state
toObjectYTermination state

config

Prop NameTypeRequiredDefaultDescription
durationNumberN1000Animation duration. If this parameter is passed in, the easing function of the animation will use easing or linear function,unit: ms
easingFunction|StringNEasing function for animation. If duration is not passed, the spring easing function is used by default. If the duration parameter is passed in, the linear easing function will be used by default.For example, incoming "cubic-bezier(.17,.67,.83,.67)" will cause the animation frame update performed according to this easing function
tensionNumberN170Tension, used for spring easing function
frictionNumberN14Friction, used for spring easing function

Instance methods

NameParamsReturnDescription
startStart the animation
pausePause the animation.After pausing, you must use the resume method to continue playing, not using start.
resumeContinue the animation.Only has an effect when the animation is paused.
reverseReverse the animation
stopStop the animation.Only have an effect during animation playback, pause, and after end
endImmediately terminate the animation, and pass the final state value of the animation to the callback method
resetReset the animation
destroyDestroy the animation
getInitialStatesObjectGet the initial state
getCurrentStatesObjectGet the current state
getFinalStatesObjectGet the final state
oneventName:string, eventHandler:Function(props: object): voidBinding event callback method。The parameters received by each callback are the current animation state objects.

Supported events

  • start: Triggered when the animation starts
  • pause: Triggered when the animation pauses(The event is triggered when the animation state is changed from playing to pause, and it will not be triggered in other cases)
  • resume: Triggered when the animation continues to play(The event is triggered when the animation state is changed from paused to playing, and it will not be triggered in other cases)
  • frame: Triggered when the animation frame is updated
  • rest: Triggered when the animation ends(The event will be triggered when the animation ends normally)
  • stop: Triggered when the animation stops(This event is triggered when the instance stop method is called)

Developers can use animation.on(eventName: string, cb: Function(currentStyle: object)) to bind the above events.

import { Animation } from '@douyinfe/semi-animation';
// ...
const animation = new Animation(
    {
        from: { value1: 0, value2: 1 /* ... */ },
        to: { value1: 1, value2: 2 /* ... */ },
    },
    {
        duration: 1000, // After passing in duration, the default is linear interpolation
    }
);

animation.on('frame', currentState => {
    // currentState: is the state value object at the current moment
    // { value1: xxx, value2: xxx, ... }
});

// The callbacks such as start and pause are the same as the frame above, and the parameters are also the same.
animation.on('start', currentState => { /* ... */ })
animation.on('pause', currentState => { /* ... */ })
animation.on('resume', currentState => { /* ... */ })
animation.on('rest', currentState => { /* ... */ })
animation.on('stop', currentState => { /* ... */ })

Licence

MIT

2.57.1-alpha.0

3 days ago

2.58.0-beta.0

4 days ago

2.57.0

14 days ago

2.57.0-beta.0

18 days ago

2.56.4-alpha.2

18 days ago

2.56.4-alpha.5

17 days ago

2.56.4-alpha.4

17 days ago

2.56.3

22 days ago

2.56.4-alpha.0

21 days ago

2.56.3-alpha.0

23 days ago

2.56.2

23 days ago

2.56.1

25 days ago

2.56.0

28 days ago

2.56.0-alpha.0

1 month ago

2.56.0-beta.0

1 month ago

2.55.4

1 month ago

2.55.5

1 month ago

2.55.3

1 month ago

2.55.2

1 month ago

2.55.1

2 months ago

2.55.0

2 months ago

2.55.0-beta.0

2 months ago

2.54.1

2 months ago

2.54.0

2 months ago

2.25.0-alpha.0

2 months ago

2.53.3

2 months ago

2.53.3-alpha.1

2 months ago

2.54.0-beta.0

2 months ago

2.53.3-alpha.0

2 months ago

2.53.1

2 months ago

2.53.2

2 months ago

2.53.0

3 months ago

2.52.3

3 months ago

2.52.1

3 months ago

2.52.2

3 months ago

2.53.0-beta.0

3 months ago

2.52.0

3 months ago

2.36.1-alpha.3

3 months ago

2.52.0-beta.1

3 months ago

2.52.0-beta.0

3 months ago

2.51.4

3 months ago

2.38.3-alpha.2

4 months ago

2.36.1-alpha.1

4 months ago

2.36.1-alpha.2

4 months ago

2.51.2

4 months ago

2.51.3

4 months ago

2.51.1

4 months ago

2.51.0

4 months ago

2.51.0-beta.0

4 months ago

2.50.1

4 months ago

2.50.0

4 months ago

2.50.0-beta.0

5 months ago

2.49.2

5 months ago

2.50.0-alpha.1

5 months ago

2.50.0-alpha.0

5 months ago

2.49.1

5 months ago

2.49.0

5 months ago

2.38.3-alpha.1

5 months ago

2.49.0-beta.0

5 months ago

2.46.1

6 months ago

2.46.0

6 months ago

2.46.2

6 months ago

2.42.0-beta.0

9 months ago

2.39.0-beta.0

10 months ago

2.45.0

7 months ago

2.45.2

7 months ago

2.45.1

7 months ago

2.45.3

6 months ago

2.18.3

7 months ago

2.43.0-alpha.0

8 months ago

2.44.1

7 months ago

2.44.0

8 months ago

2.46.0-beta.0

6 months ago

2.38.3-alpha.0

7 months ago

2.32.4

9 months ago

2.32.6

7 months ago

2.32.5

8 months ago

2.43.0

8 months ago

2.43.2

8 months ago

2.43.1

8 months ago

2.44.0-beta.0

8 months ago

2.48.0-alpha.0

5 months ago

2.39.1

10 months ago

2.39.0

10 months ago

2.39.3

10 months ago

2.39.2

10 months ago

2.42.1

9 months ago

2.42.0

9 months ago

2.42.3

8 months ago

2.42.2

9 months ago

2.27.2

9 months ago

2.42.4

8 months ago

2.40.0-beta.0

10 months ago

2.43.1-alpha.1

8 months ago

2.38.2

10 months ago

2.38.1

10 months ago

2.38.0

11 months ago

2.41.2

9 months ago

2.41.1

9 months ago

2.41.3

9 months ago

2.41.0

9 months ago

2.38.2-alpha.0

10 months ago

2.38.2-alpha.1

10 months ago

2.39.2-alpha.0

10 months ago

2.40.0

9 months ago

2.41.0-beta.0

9 months ago

2.47.0-beta.0

6 months ago

2.45.3-alpha.0

7 months ago

2.45.3-alpha.1

7 months ago

2.44.1-alpha.0

7 months ago

2.48.0

5 months ago

2.48.0-beta.0

6 months ago

2.43.0-beta.0

8 months ago

2.36.1-alpha.0

6 months ago

2.47.0

6 months ago

2.47.1

5 months ago

2.45.0-beta.0

7 months ago

2.40.0-alpha.0

10 months ago

2.37.1

11 months ago

2.38.0-beta.0

11 months ago

2.36.0-beta.0

12 months ago

2.32.3

11 months ago

2.37.0-beta.0

11 months ago

2.37.0

11 months ago

2.36.0-alpha.0

12 months ago

2.36.0

12 months ago

2.34.0

1 year ago

2.32.1-alpha.0

1 year ago

2.34.2

1 year ago

2.34.1

1 year ago

2.34.0-alpha.1

1 year ago

2.31.2-alpha.0

1 year ago

2.33.0-beta.0

1 year ago

2.33.1

1 year ago

2.33.0

1 year ago

2.32.0-beta.0

1 year ago

2.29.0-beta.0

1 year ago

2.29.0

1 year ago

2.32.0

1 year ago

2.32.2

1 year ago

2.32.1

1 year ago

2.34.2-alpha.0

1 year ago

2.28.1

1 year ago

2.28.2

1 year ago

2.31.1

1 year ago

2.31.0

1 year ago

2.31.3

1 year ago

2.31.2

1 year ago

2.31.4

1 year ago

2.30.2

1 year ago

2.30.1

1 year ago

2.30.0

1 year ago

2.33.2-alpha.1

1 year ago

2.31.3-alpha.1

1 year ago

2.31.3-alpha.0

1 year ago

2.31.0-beta.0

1 year ago

2.34.0-beta.0

1 year ago

2.27.1-alpha.3

1 year ago

2.27.1-alpha.2

1 year ago

2.34.1-alpha.3

1 year ago

2.34.1-alpha.2

1 year ago

2.32.2-alpha.1

1 year ago

2.35.0-beta.0

1 year ago

2.25.4

1 year ago

2.25.3

1 year ago

2.30.0-beta.0

1 year ago

2.30.0-alpha.3

1 year ago

2.30.0-alpha.2

1 year ago

2.30.0-alpha.1

1 year ago

2.30.0-alpha.0

1 year ago

2.35.0

12 months ago

2.27.1

1 year ago

2.27.0

1 year ago

2.27.0-alpha.2

1 year ago

2.28.0-beta.1

1 year ago

2.27.0-alpha.1

1 year ago

2.27.0-alpha.0

1 year ago

2.28.0-beta.0

1 year ago

2.26.0

1 year ago

2.27.1-alpha.1

1 year ago

2.27.1-alpha.0

1 year ago

2.28.0-alpha.0

1 year ago

2.25.0

1 year ago

2.25.2

1 year ago

2.25.1

1 year ago

2.24.1-alpha.0

1 year ago

2.27.0-beta.0

1 year ago

2.28.0

1 year ago

2.26.0-beta.0

1 year ago

2.24.3

1 year ago

2.24.2

1 year ago

2.25.0-beta.0

1 year ago

2.23.6

1 year ago

2.23.5

1 year ago

2.23.7

1 year ago

2.23.2

1 year ago

2.23.1

1 year ago

2.21.3-alpha.0

2 years ago

2.23.4

1 year ago

2.23.3

1 year ago

2.20.5-alpha.2

2 years ago

2.20.5-alpha.0

2 years ago

2.20.5-alpha.1

2 years ago

2.20.9-alpha.0

2 years ago

2.22.1

2 years ago

2.22.0

2 years ago

2.22.3

2 years ago

2.22.2

2 years ago

2.22.0-alpha.0

2 years ago

2.22.0-beta.3

2 years ago

2.22.0-beta.0

2 years ago

2.22.0-beta.1

2 years ago

2.22.0-beta.2

2 years ago

2.21.0

2 years ago

2.23.0-beta.1

2 years ago

2.21.2

2 years ago

2.23.0-beta.0

2 years ago

2.21.1

2 years ago

2.24.0-beta.1

1 year ago

2.22.2-alpha.1

2 years ago

2.22.2-alpha.0

2 years ago

2.23.0-alpha.0

2 years ago

2.24.0-beta.0

1 year ago

2.23.0-alpha.2

1 year ago

2.21.0-beta.0

2 years ago

2.21.0-beta.1

2 years ago

2.20.8

2 years ago

2.24.1

1 year ago

2.20.6

2 years ago

2.24.0

1 year ago

2.20.7

2 years ago

2.20.4

2 years ago

2.20.5

2 years ago

2.24.0-alpha.0

1 year ago

2.23.0

1 year ago

2.19.0

2 years ago

2.19.0-alpha.3

2 years ago

2.19.0-alpha.4

2 years ago

2.19.0-alpha.5

2 years ago

2.19.0-alpha.6

2 years ago

2.18.1-alpha.0

2 years ago

2.19.0-beta.0

2 years ago

2.18.1

2 years ago

2.18.2

2 years ago

2.21.0-alpha.0

2 years ago

2.19.1-alpha.0

2 years ago

2.20.2

2 years ago

2.20.3

2 years ago

2.20.0

2 years ago

2.20.1

2 years ago

2.19.0-alpha.7

2 years ago

2.19.0-alpha.8

2 years ago

2.19.0-alpha.9

2 years ago

2.19.2-alpha.0

2 years ago

2.20.0-beta.1

2 years ago

2.20.0-beta.0

2 years ago

2.17.0-beta.0

2 years ago

2.17.0-beta.1

2 years ago

2.14.0-alpha.0

2 years ago

2.15.0

2 years ago

2.15.1

2 years ago

2.15.2-alpha.0

2 years ago

2.15.0-beta.0

2 years ago

2.19.0-alpha.0

2 years ago

2.19.0-alpha.1

2 years ago

2.19.0-alpha.2

2 years ago

2.14.0-beta.0

2 years ago

2.14.0-beta.1

2 years ago

2.13.0-beta.0

2 years ago

2.18.0

2 years ago

2.10.5

2 years ago

2.14.0-beta.2

2 years ago

2.10.4

2 years ago

2.14.0

2 years ago

2.17.0

2 years ago

2.17.1

2 years ago

2.13.0

2 years ago

2.18.0-beta.0

2 years ago

2.16.0-beta.0

2 years ago

2.16.1

2 years ago

2.16.0

2 years ago

2.17.0-alpha.0

2 years ago

2.17.0-alpha.1

2 years ago

2.12.0-beta.1

2 years ago

2.12.1-alpha.2

2 years ago

2.12.0-beta.0

2 years ago

2.12.0-beta.3

2 years ago

2.12.0-beta.2

2 years ago

2.12.0-beta.5

2 years ago

2.12.0-beta.4

2 years ago

2.12.1-alpha.0

2 years ago

2.11.0

2 years ago

2.11.1

2 years ago

2.11.2

2 years ago

2.12.0-alpha.0

2 years ago

2.10.1

2 years ago

2.12.0

2 years ago

2.10.2

2 years ago

2.10.0

2 years ago

2.11.0-beta.1

2 years ago

2.11.0-beta.0

2 years ago

2.8.1

2 years ago

2.9.0-beta.0

2 years ago

2.9.0-beta.1

2 years ago

2.9.1

2 years ago

2.10.0-beta.0

2 years ago

2.9.0

2 years ago

2.8.2

2 years ago

2.8.0-beta.1

2 years ago

2.8.0-beta.0

2 years ago

2.8.0

2 years ago

2.7.0

2 years ago

2.7.1

2 years ago

2.6.0

2 years ago

2.5.1

2 years ago

2.7.0-beta.0

2 years ago

2.5.0-beta.0

2 years ago

2.2.0-beta.1

2 years ago

2.3.0

2 years ago

2.3.0-beta.0

2 years ago

2.2.1

2 years ago

2.2.0

2 years ago

2.5.0

2 years ago

2.4.1

2 years ago

2.4.0

2 years ago

2.3.1

2 years ago

2.2.2

2 years ago

2.6.0-beta.0

2 years ago

2.4.0-beta.0

2 years ago

2.2.0-beta.0

2 years ago

2.1.2

2 years ago

2.1.1

2 years ago

2.1.4

2 years ago

2.1.3

2 years ago

2.1.5

2 years ago

2.1.0

2 years ago

2.1.0-beta.1

2 years ago

2.1.0-next.1

2 years ago

2.1.0-beta.3

2 years ago

2.1.0-next.3

2 years ago

2.1.0-beta.2

2 years ago

2.1.0-next.0

2 years ago

2.1.0-alpha.3

2 years ago

2.1.0-alpha.2

2 years ago

2.1.0-beta.0

2 years ago

2.0.7-alpha.0

2 years ago

2.0.3

3 years ago

2.0.2

3 years ago

2.0.5

3 years ago

2.0.1-alpha.0

3 years ago

2.0.4

3 years ago

2.0.7

2 years ago

2.0.6

3 years ago

2.0.8

2 years ago

2.1.0-alpha.1

2 years ago

2.1.0-alpha.0

2 years ago

2.0.1

3 years ago

2.0.0

3 years ago

2.0.0-alpha.1

3 years ago

2.0.0-alpha.0

3 years ago