mirror of https://github.com/sveltejs/svelte
add crossfade and flip functions (#2241)
parent
c2413ae9ac
commit
394e3e9593
@ -0,0 +1,25 @@
|
||||
import { cubicOut } from './easing';
|
||||
import { is_function } from './internal';
|
||||
|
||||
export function flip(node, animation, params) {
|
||||
const style = getComputedStyle(node);
|
||||
const transform = style.transform === 'none' ? '' : style.transform;
|
||||
|
||||
const dx = animation.from.left - animation.to.left;
|
||||
const dy = animation.from.top - animation.to.top;
|
||||
|
||||
const d = Math.sqrt(dx * dx + dy * dy);
|
||||
|
||||
const {
|
||||
delay = 0,
|
||||
duration = d => Math.sqrt(d) * 120,
|
||||
easing = cubicOut
|
||||
} = params;
|
||||
|
||||
return {
|
||||
delay,
|
||||
duration: is_function(duration) ? duration(d) : duration,
|
||||
easing,
|
||||
css: (t, u) => `transform: ${transform} translate(${u * dx}px, ${u * dy}px);`
|
||||
};
|
||||
}
|
Loading…
Reference in new issue