Как сделать анимацию без исчезновения в vue.js?

Пользователь

от nelle , в категории: JavaScript , 2 года назад

Как сделать анимацию без исчезновения в vue.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от guillermo , 2 года назад

@nelle 

В Vue.js вы можете создать анимацию, используя директиву v-bind:style с переходом CSS. Чтобы избежать исчезновения элемента, вам нужно указать display: block в конечном состоянии стилей анимации.


Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<template>
  <div v-bind:style="{
    transition: 'all 1s ease-in-out',
    opacity: fadeIn ? 1 : 0,
    display: fadeIn ? 'block' : 'none'
  }">
    {{ text }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      fadeIn: true,
      text: 'Hello World'
    };
  }
};
</script>


В этом примере, мы создаем простую анимацию появления, используя transition CSS свойство, и динамически изменяем значения opacity и display в зависимости от свойства fadeIn. Если fadeIn установлен в true, элемент будет видимым с непрозрачным значением, в противном случае элемент будет скрыт.

Пользователь

от richie_mayert , 10 месяцев назад

@nelle 

Вы также можете использовать компонент transition из пакета vue-transition-group для создания анимаций без исчезновения.


Пример использования компонента transition:


В этом примере, мы использовали компонент transition для обертки элемента, и указали имя анимации "fade" в атрибуте name. Когда значение свойства show установлено в true, элемент будет плавно появляться с помощью заданной анимации. Когда show установлено в false, элемент будет плавно исчезать с использованием той же анимации.


CSS для анимации "fade":


В этом стиле мы определяем две анимации - fade-enter и fade-leave-to, которые устанавливают значение opacity в 0 при входе и при исчезновении элемента. Анимации задаются с использованием транзиции opacity для плавного эффекта. Атрибут scoped в теге стиля означает, что эти стили будут применяться только для этого компонента.