2017-12-28 40 views
0

ボタンクリックで拡大縮小する必要のある要素を持つVueアプリがあります。エフェクトをアニメーション化する必要があります。私はこのために<transition>タグを使用していますが、CSSの要素のheightプロパティをハードコードしない限り動作しません。要素に動的データが含まれており、高さが変化するため、これは機能しません。ここでハードコーディングの高さなしでVue.jsトランジションを使用するにはどうすればよいですか?

は私のコードです:ここでは

<template> 
    <input type="button" value="Toggle" v-on:click="showIt = !showIt"/> 
    <transition name="test-tran"> 
     <div class="test-block" v-show="showIt"> 
      <div v-for="item in items">{{ item }}</div> 
     </div> 
    </transition> 
</template> 

<script> 
    export default { 
     data() { 
      return { 
       showIt: false 
      }; 
     } 
    } 
</script> 

は、対応するCSSです:heightプロパティなし

.test-block { 
    /* 
    adding a height makes the transition work but 
    an accurate height can't be known ahead of time 

    height: 100px; 
    */ 
} 

.test-tran-enter-active { 
    transition: all .5s ease; 
} 

.test-tran-leave-active { 
    transition: all .5s ease; 
} 

.test-tran-enter, .test-tran-leave-to 
    height: 0; 
} 

.test-tran-leave, .test-tran-enter-to 
    /* 
    adding a height makes the transition work but 
    an accurate height can't be known ahead of time 

    height: 100px; 
    */ 
} 

、要素が表示され、正しく非表示になりますが、何のアニメーションはありません。それはちょうど現れ、瞬時に消える。

CSSの高さをハードコーディングせずにアニメーションを動作させるにはどうしたらよいですか?

答えて

関連する問題