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の高さをハードコーディングせずにアニメーションを動作させるにはどうしたらよいですか?
あなたは正しいですよ! – d512