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>
    把样式一起封装进来,是比较推荐的方式
  • 相关阅读:
    xss框架(一)之浏览器通信
    Joomla未授权创建特权用户漏洞和getshell脚本解析
    从零开始写网站登录爆破(一)
    CSRF学习整理
    vue中vue2-google-maps使用谷歌地图的基础操作
    vue中百度地图API的调用
    60秒定时减少
    git操作指令,以及常规git代码操作
    taro taroUi的H5打包后路径/修改为./
    vue enter事件无效,加入native
  • 原文地址:https://www.cnblogs.com/wzndkj/p/9704698.html
Copyright © 2011-2022 走看看