zoukankan      html  css  js  c++  java
  • vue中动画的封装

    <style>
      .v-enter,.v-leave-to{
        opacity: 0;
      }
      .v-enter-active,.v-leave-active{
        transition:opacity 1s;
      }
    </style>

    <div id='app'>   <transition>     <div v-if='show'>hello world</div>   </transition>   <button @click='handleClick'>切换</button> </div> <script> var vm = new Vue({   el:'#app',   data:{     show:true   },   methods:{     handleClick:function(){       this.show = !this.show;     }   } }) </script>
    有时候这种渐隐渐现的效果用的比较多,要复用,需要封装一下,怎么封装呢
    <style>
      .v-enter,.v-leave-to{
        opacity: 0;
      }
      .v-enter-active,.v-leave-active{
        transition:opacity 1s;
      }
    </style>

    <div id='app'>   <fade :show='show'>     <div>hello world</div>   </fade>   <fade :show='show'>     <h1>hello world</h1>   </fade>   <button @click='handleClick'>切换</button> </div> <script> Vue.component('fade',{   props:['show'],   template: `     <transition>       <slot v-if='show'></slot>     </transition>   ` }) var vm = new Vue({   el:'#app',   data:{     show:false   },   methods:{     handleClick:function(){       this.show = !this.show;     }   } }) </script>
    可以这样封装,将dom元素传入slot,除了这样,还可以样式一起封装进去
    <div id='app'>
      <fade :show='show'>
        <div>hello world</div>
      </fade>
      <fade :show='show'>
        <h1>hello world</h1>
      </fade>
      <button @click='handleClick'>切换</button>
    </div>
    
    <script>
    Vue.component('fade',{
      props:['show'],
      template: `
        <transition @before-enter='handleBeforeEnter' @enter='handleEnter'>
          <slot v-if='show'></slot>
        </transition>
      `,
      methods:{
        handleBeforeEnter:function(el){
          el.style.color='red'
        },
        handleEnter:function(el,done){
          setTimeout(()=>{
            el.style.color='green';
            done();
          },2000)
        }
      }
    })
    var vm = new Vue({
      el:'#app',
      data:{
        show:false
      },
      methods:{
        handleClick:function(){
          this.show = !this.show;
        }
      }
    })
    </script>
    把样式一起封装进来,是比较推荐的方式
  • 相关阅读:
    LeetCode#237 Delete Node in a Linked List
    数据库概念
    请基于 TCP/IP 五层网络模型描述下当我们在浏览器请求 https ://pp.io 站点时,发生了哪些事情
    高并发大流量
    mysql关于索引
    php基础——会话控制
    php基础——运算符知识
    php基础——常量及数据类型考察
    引用变量和cow机制
    关系基本特性的运算封闭性
  • 原文地址:https://www.cnblogs.com/wzndkj/p/9704698.html
Copyright © 2011-2022 走看看