Locations: Rework the Crossfade transition

Add a start value for the scale to make it more elegant
This commit is contained in:
2020-04-07 19:24:06 +02:00
parent c3c888da52
commit a93571842b
3 changed files with 23 additions and 18 deletions

View File

@@ -12,8 +12,6 @@ let delay = 0
export const animateIn = scope => {
// Each location (reveal on scroll)
scope.querySelectorAll('.location').forEach(location => {
console.log(delay)
const tl = anime.timeline({
easing: 'easeOutQuart',
duration: 600,

View File

@@ -4,14 +4,20 @@ import { quartOut } from 'svelte/easing'
// Crossfade transition
export const [send, receive] = crossfade({
duration: d => Math.sqrt(d * 200),
fallback (node, params) {
fallback: (node, params) => {
const {
duration = 600,
easing = quartOut,
start = 0.85
} = params
const style = getComputedStyle(node)
const transform = style.transform === 'none' ? '' : style.transform
const sd = 1 - start
return {
duration: 600,
easing: quartOut,
css: t => `
transform: ${transform} scale(${t});
duration,
easing,
css: (t, u) => `
transform: ${transform} scale(${1 - (sd * u)});
opacity: ${t}
`
}

View File

@@ -50,18 +50,19 @@ export const animateIn = () => {
})
// Title: Of (reveal on scroll)
const titleOf = ScrollOut({
const titleOf = document.getElementById('title-of')
const titleOfAnime = anime({
targets: titleOf.querySelectorAll('span'),
translateY: ['100%', 0],
easing: 'easeOutQuart',
delay: anime.stagger(70),
duration: animDuration,
autoplay: false
})
const titleOfScroll = ScrollOut({
once: true,
targets: '#title-of',
onShown: el => {
anime({
targets: el.querySelectorAll('span'),
translateY: ['100%', 0],
easing: 'easeOutQuart',
delay: anime.stagger(70),
duration: animDuration
})
}
targets: titleOf,
onShown: () => titleOfAnime.restart()
})
// Title: World (reveal on scroll)