我正在努力尝试使用 v-if 顺利显示/隐藏内容的 vue 转换。虽然我了解 css 类和过渡,但我可以使用不透明度或翻译等方式使内容“平滑地”显示……但是一旦动画完成(或者更确切地说,当它开始时),下面的任何 html 部分似乎“跳跃” ‘.
我正在尝试实现与 Bootstrap 4 ‘collapse’ 类相同的效果 - 单击此处顶部的按钮之一: https ://getbootstrap.com/docs/4.0/components/collapse/
当隐藏部分出现/消失时,所有 html 内容都可以很好地“滑动”。
对于使用 v-if 显示的内容,是否可以使用 Vue 转换? vue transitions docs 上的所有示例虽然具有出色的 css 过渡效果,但在过渡开始或完成后具有以下 html“跳转”。
我见过一些使用最大高度的纯 js 解决方案 - https://jsfiddle.net/wideboy32/7ap15qq0/134/
并尝试使用 vue: https://jsfiddle.net/wideboy32/eywraw8t/303737/
.smooth-enter-active, .smooth-leave-active {
transition: max-height .5s;
}
.smooth-enter, .smooth-leave-to {
max-height: 0 .5s;
}
谢谢!
原文由 The Wideboy 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果你想为最大高度设置动画,那么你应该为你想要设置动画的元素输入最大高度的数量,同时在最大高度定义中输入’s’(或秒)时更正第二类:
如果你想要像 bs4 collapse 这样的东西,那么 vue 网站中的例子就可以了:
编辑:您要做的是通过首先找出内容的高度然后将其设置在
.*-enter-to
和.*-leave
类中来实现。下面的小提琴演示了一种方法:https://jsfiddle.net/rezaxdi/sxgyj1f4/3/
您也可以完全忘记 v-if 或 v-show 并使用我认为更平滑的高度值隐藏元素:
https://jsfiddle.net/rezaxdi/tgfabw65/9/