我目前正在try 在一个小组件上集成动画,该组件包含:一个标题、一个图像和一块按钮.

规则如下:

  • 最初,我们只有标题和图像,
  • 当您将鼠标悬停在组件上时,标题朝顶部消失,图像上升并取而代之,按钮从底部出现.
  • 当我们停止将鼠标悬停在组件上时,标题将从顶部重新出现,图像将再次向下移动,取代按钮,并且按钮将朝着底部消失.

目前,由于某些未知的原因,组件(标题和按钮)系统地来自页面的左上角.更重要的是,只有当悬停停止时,图像才会有动画效果,而不是在开始时.

这是一张link to the VueJS playground英镑的钞票,让你看看它是如何工作的

您的帮助我们将不胜感激

我已经试过了:

  • 转换组中的类型修改(transition,animation)
  • 在每个组件上放置相同的key,即使这是official documentation所禁止的,也会在开始和结束时重新激活图像上的动画.
  • 使用position: absolute
  • 使用transition-origin
  • 使用perspective-origin
  • 通过@beforeLeave钩子强制使用顶部和左侧属性
  • 将组件集成到iFrame中,注意组件(标题和按钮)出现在iFrame的左上角(这并不奇怪).

推荐答案

当您使用v-if而不是v-show时,元素将停止从左上角进入.此外,我认为只有当您同时使用CSS动画和过渡时,才需要type="animation",但您只使用过渡.

最后,您可以将放置位置设置为要将其移出和移至的位置.要平滑过渡,请在离开元素上使用绝对位置,以便立即腾出空间:

.slide-fade-leave-active{
  position: absolute;
}
.slide-fade-enter-from,
.slide-fade-leave-to {
  opacity: 0;
  transform: translateY(-100px);
}

这是一张playground元的.希望能有所帮助

Vue.js相关问答推荐

Nuxt 3 I18N浏览器检测不起作用

VueJS 中的 VisJS 时间轴:带有图像的项目放错了位置

Vue Datepicker 不会在渲染时显示默认日期

Svelte 中的简单react 性实验以意想不到的方式失败了. Vue 等效项没有

如何在 Nuxt3 中使用 nuxtjs/auth-next 模块?

如何解决 Vue.js 中的相邻 JSX 元素必须包含在封闭标记中问题

使用 vuex 更新数据

在组件的样式部分使用 Vue 变量

vuejs 中的单元测试

VueJS + VueRouter:有条件地禁用路由

如何从我的 Vuetify 数据表中正确更新 Vuex 状态

axios.patch / axios.put 在 Vue 和 Laravel 中不起作用

怎样1秒后自动隐藏VueJS中的元素

如何使表格行可点击并展开行 - vue.js - element-ui

我在 Nuxt 2.14.0 中运行的是什么版本的 Vue?

VS代码中的红点是什么意思

找不到模块 'babel-core' 但已安装 @babel/core

我应该将所有数据存储在 vuex 状态

无法访问函数内的数据属性

$emit 不会触发子事件