孙卫琴的《精通Vue.js》读书笔记-CSS中DOM元素的过渡模式

本文参考孙卫琴,杜聚宾所创作的 <<精通Vue.js: Web前端开发技术详解>>一书
在这里插入图片描述
当两个DOM元素进行切换时,假定DOM元素A进入隐藏过渡阶段,DOM元素B进入显示过渡阶段,它们的过渡顺序由组件的mode过渡模式属性来决定,mode有三个可选值:
(1)默认:A和B同时过渡,过渡结束后, B取代A的位置。
(2)in-out: B先进入显示过渡阶段, B过渡结束后, A再进入隐藏过渡阶段,A过渡结束后, B取代A的位置。
(3)out-in:A先进入隐藏过渡阶段, A过渡结束后, B在A的位置上进入显示过渡阶段,直到完全显现。

例程1的mode.html演示了三种过渡模式的过渡效果。mode.html中的组件通过v-if/v-else指令包裹了两个

元素,它们的key分别为div1和div2。mode.html网页上的“切换”按钮通过改变isShow变量,来轮流显示两个
元素。

例程1 mode.html

    <style>
      .redbox {
        width: 100px;
        height: 100px;
        background-color: red;
      }
      .bluebox {
        width: 100px;
        height: 100px;
        background-color: blue;
      }
      .special-enter-from,.special-leave-to{
        opacity: 0;
      }
      .special-enter-active,.special-leave-active{
        transition: 3s;
      }
      .special-enter-to,.special-leave-from{
        opacity: 1;
      }
    </style>

    <div id="app">
       <button v-on:click="isShow=!isShow">切换</button>    
       <hr/>

       <!-- <transition name="special" >  -->
       <!-- <transition name="special" mode="out-in"> -->
       <transition name="special" mode="in-out">
         <div v-if="isShow" key="div1" class="redbox">div1</div>
         <div v-else key="div2" class="bluebox">div2</div>
       </transition>
    </div>

    <script>
      const vm = Vue.createApp({
        data() {
          return {isShow: "true"}
        },
      }).mount('#app')
    </script>

下面通过以下步骤来测试三种过渡模式的过渡效果。
(1)组件采用默认过渡模式:

<transition name="special" >

通过浏览器访问mode.html,网页一开始显示红色的div1,点击网页上的“切换”按钮,div1进入隐藏过渡阶段,与此同时,div1下方的蓝色的div2进入显示过渡阶段。等到div1和div2过渡结束,div1消失,div2会取代div1在网页上的位置,参见图1。
在这里插入图片描述

图1 div1和div2分别进入隐藏过渡和显示过渡阶段

(2)组件采用in-out过渡模式:

<transition name="special" mode="in-out" >

通过浏览器访问mode.html,网页一开始显示红色的div1,点击网页上的“切换”按钮,div1下方的蓝色的div2进入显示过渡阶段。等到div2过渡结束,div1再进入隐藏过渡阶段。等到div1过渡结束,彻底消失后,div2再取代div1在网页上的位置。
(3)组件采用out-in过渡模式:

<transition name="special" mode="out-in" >

通过浏览器访问mode.html,网页一开始显示红色的div1,点击网页上的“切换”按钮,div1进入隐藏过渡阶段。等到div1过渡结束,彻底消失后,div2在div1所在的位置进入显示过渡阶段,直到完全显现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java技术集锦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值