css - 使用 Transition 在 Vuejs 中的 v-if 上设置动画高度

标签 css animation vuejs2 vue.js

我正在使用以下代码通过将高度从 0 像素降低来为 v-if 元素设置动画。动画效果很好。但问题是我必须指定元素的初始高度是 CSS。对于一个元素,这没问题,但我想将此动画应用于多个元素。我怎样才能解决这个问题?因此,无论高度如何,动画效果都很好!

<transition name="fadeHeight" mode="out-in">
<div v-if="something">
<p>something over here where the height is not constant</p>
</div>
</transition>

.fadeHeight-enter-active,
.fadeHeight-leave-active {
  transition: all 0.2s;
  height: 230px;
}
.fadeHeight-enter,
.fadeHeight-leave-to
{
  opacity: 0;
  height: 0px;
}

最佳答案

看起来您并没有发布所有代码,但希望我理解了目标。

尝试将过渡移动到 max-height 属性:

.fadeHeight-enter-active,
.fadeHeight-leave-active {
  transition: all 0.2s;
  max-height: 230px;
}
.fadeHeight-enter,
.fadeHeight-leave-to
{
  opacity: 0;
  max-height: 0px;
}

只要您将最大高度设置为大于最高元素,它应该可以满足您的需求。请注意,您可能还想使用 overflow:hidden。如果元素的实际高度有显着变化,这个解决方案可能不是最好的,因为它会使动画持续时间/延迟看起来非常不同。

https://jsfiddle.net/7ap15qq0/4/

关于css - 使用 Transition 在 Vuejs 中的 v-if 上设置动画高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42591331/

相关文章:

javascript - 我如何使用 javascript 来实现这样用户只能在 Lottie 动画完全播放后触发悬停事件?

vuejs2 - Vuetify : use carousel to display components

vue.js - 使用 Jest 测试时未定义全局节点配置变量

css:使颜色颜色像不透明一样变浅,但不透明

javascript - CSS - 防止文本在调整大小时移动

html - 如何在悬停时阻止其他文本在我的导航栏上向下移动?

html - 创建一个在 X 秒后开始的 CSS3 动画

javascript - 如何在vue js中使用@click inside google maps infowindow触发一个函数?

html - 如何正确使用HTML5标签Article和Section?

jquery - jquery 行 4618 上的 IE 错误