diff --git a/src/client/components/sequential-entrance.vue b/src/client/components/sequential-entrance.vue index a09d67f1c7..c909b51727 100644 --- a/src/client/components/sequential-entrance.vue +++ b/src/client/components/sequential-entrance.vue @@ -40,22 +40,29 @@ export default Vue.extend({ i: 0, methods: { beforeEnter(el) { + if (document.hidden) return; + el.style.opacity = 0; el.style.transform = this.direction === 'down' ? 'translateY(-64px)' : 'translateY(64px)'; - let index = this.$options.i; - const delay = this.delay * index; + const delay = this.delay * this.$options.i; el.style.transition = [getComputedStyle(el).transition, `transform 0.7s cubic-bezier(0.23, 1, 0.32, 1) ${delay}ms`, `opacity 0.7s cubic-bezier(0.23, 1, 0.32, 1) ${delay}ms`].filter(x => x != '').join(','); this.$options.i++; - }, - enter(el, done) { + setTimeout(() => { + el.style.transition = ''; + this.$options.i--; + }, delay + 710); + }, + enter(el) { + if (document.hidden) { + el.style.opacity = 1; + el.style.transform = 'translateY(0px)'; + return; + }; + + setTimeout(() => { // 必要 el.style.opacity = 1; el.style.transform = 'translateY(0px)'; - el.addEventListener('transitionend', () => { - el.style.transition = ''; - this.$options.i--; - done(); - }, { once: true }); }); }, leave(el) {