用Vue实现css过渡

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="./vue.js"></script>
    <style>
      .box {
        width: 100px;
        height: 100px;
        background-color: red;
      }
      /* 出现阶段的三个函数 */
      /* v-enter:时间点: 定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。 */
      .v-enter {
        opacity: 0;
      }
      /* v-enter-active: 时间段:在元素显示之前,在过渡/动画完成之后移除 */
      .v-enter-active {
        transition: all 10s linear;
      }
      /* 时间段: 。在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。 */
      .v-enter-to {
        opacity: 1;
      }

      /* 消失阶段的三个函数 */
      .v-leave {
        opacity: 1;
      }
      .v-leave-active {
        transition: all 5s linear;
      }
      .v-leave-to {
        opacity: 0;
      }

      /* 自定义过渡类名 */

      .show-enter {
        opacity: 0;
      }

      .show-enter-active {
        transition: all 3s linear;
      }

      .show-enter-to {
        opacity: 1;
      }

      /* 消失阶段的三个函数 */
      .show-leave {
        opacity: 1;
      }
      .show-leave-active {
        transition: all 3s linear;
      }
      .show-leave-to {
        opacity: 0;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <input type="checkbox" v-model="show" /> 显示/隐藏
      <hr />
      <!-- 
          <transition> 元素作为单个元素/组件的过渡效果。<transition> 只会把过渡效果应用到其包裹的内容上,而不会额外渲染 DOM 元素,也不会出现在可被检查的组件层级中。
        -->
      <transition>
        <div class="box" v-show="show"></div>
      </transition>

      <!-- 
          为了区分多个过渡类名,自定义过渡类名
       -->
      <br />
      <br />
      <transition name="show">
        <div class="box" v-show="show"></div>
      </transition>
    </div>
    <script>
      // vue 动画
      // 1. css 内置的过渡类名实现动画; v-enter-* 和 v-leave-*;
      // 2. css 自定义过渡类名实现动画

      let vm = new Vue({
        el: "#app",
        data: {
          show: true,
        },
      });
    </script>
  </body>
</html>
 
效果如下

 

 

posted @ 2020-12-26 09:38  阳菜  阅读(255)  评论(0)    收藏  举报