封装的过度与动画

2022-04-11  本文已影响0人  冰点雨

1.作用:在插入、更新、移除 DOM 元素时,在合适的时候给元素添加样式类名
2.写法:
(1)准备好样式:
v-enter:进入的起点
v-enter-active:进入过程中
v-enter-to:进入的终点
v-leaver:离开的起点
v-leaver-active:离开过程中
v-leaver-to:离开的终点
(2)使用<transition>包裹要过度的元素,并配置 name 属性
<transition name="hello">
<h1 v-show="isShow">你好啊</h1>
</transition>
3.备注:若有多个元素需要过度,则需要使用<transition-group>且每个元素对需要指定 key 值

App.vue

<template>
  <div>
    <Test />
    <Test2 />
    <Test3 />
  </div>
</template>

<script>
import Test from './components/Test'
import Test2 from './components/Test2'
import Test3 from './components/Test3'

export default {
  name: 'App',
  components: {
    Test,
    Test2,
    Test3,
  },
}
</script>
<style></style>

Test.vue

<template>
  <div>
    <button @click="isShow = !isShow">显示/隐藏</button>
    <transition name="hello" appear>
      <h1 v-show="isShow">你好啊</h1>
    </transition>
  </div>
</template>

<script>
export default {
  name: 'Test',
  data() {
    return {
      isShow: true,
    }
  },
  methods: {},
}
</script>

<style scoped>
h1 {
  background-color: orange;
}

.hello-enter-active {
  animation: animationTest 1s linear;
}

.hello-leave-active {
  animation: animationTest 1s linear reverse;
}

@keyframes animationTest {
  from {
    transform: translateX(-100%);
  }
  to {
    transform: translateX(0px);
  }
}
</style>

Test2.vue

<template>
  <div>
    <button @click="isShow = !isShow">显示/隐藏</button>
    <transition-group name="hello" appear>
      <h1 v-show="!isShow" key="1">你好啊</h1>
      <h1 v-show="isShow" key="2">我很好</h1>
    </transition-group>
  </div>
</template>

<script>
export default {
  name: 'Test',
  data() {
    return {
      isShow: true,
    }
  },
  methods: {},
}
</script>

<style scoped>
h1 {
  background-color: orange;
}

/* 进入的起点、离开的终点  */
.hello-enter,
.hello-leave-to {
  transform: translateX(-100%);
}
.hello-enter-active,
.hello-leave-active {
  transition: 0.5s linear;
}
/* 进入的终点、离开的起点  */
.hello-enter-to,
.hello-leave {
  transform: translateX(0);
}
</style>

Test3.vue

<template>
  <div>
    <button @click="isShow = !isShow">显示/隐藏</button>
    <transition-group
      appear
      name="animate__animated animate__bounce"
      enter-active-class="animation-swing"
      leave-active-class="animate__backOutUp"
    >
      <h1 v-show="!isShow" key="1">你好啊</h1>
      <h1 v-show="isShow" key="2">我很好</h1>
    </transition-group>
  </div>
</template>

<script>
import 'animation.css'
export default {
  name: 'Test',
  data() {
    return {
      isShow: true,
    }
  },
  methods: {},
}
</script>

<style scoped>
h1 {
  background-color: orange;
}
</style>

上一篇下一篇

猜你喜欢

热点阅读