vue的transition进场过度不生效的可能原因

vue使用transition标签进场过度不生效可能的原因

现象:用vue自带的transition写了一个过度,奇怪的是进场不生效,出场生效
原因:没有区分 Vue的版本 我是vue3但使用了vue2的写法,所以不生效
解决:
vue2的写法:v-enter/v-leave
vue3的写法:v-enter-from/v-leave-from
代码:一个简单的显隐控制
参考:https://v3.vuejs.org/guide/transitions-enterleave.html

<transition>
	<div v-if="isShow"> </div>
</transition>
.v-enter-from, /* vue3*/
.v-leave-to {
  opacity: 0;
}
.v-enter-active,
.v-leave-active {
  transition: opacity 0.5s;
}
### 关于 Vue.js Transition 过渡效果不生效的解决方案 在处理 `transition` 或者 `transition-group` 组件时遇到动画未按预期工作的情况,通常是由几个常见原因引起的。下面是一些可能原因以及对应的解决办法。 #### 1. 确认元素存在唯一 key 属性 为了使过渡正常运作,在被切换或列表项中应当给定唯一的 `key` 属性。这有助于框架识别哪些节点应该进入/离开,并据此应用相应的类名来进行样式控制[^1]。 ```html <template> <div> <!-- 使用 Popconfirm 并确保内部元素有 unique key --> <a-popconfirm title="Sure to delete?" ok-text="Yes" cancel-text="No"> <span :key="uniqueKey">Content</span> </a-popconfirm> </div> </template> <script setup> import { ref } from 'vue'; const uniqueKey = ref('someUniqueString'); </script> ``` #### 2. 验证 CSS 类的存在性和正确性 检查项目中的全局或局部样式表里是否存在覆盖默认 `.v-enter-active`, `.v-leave-active` 及其相关联的状态类(如`.v-enter-from`, `.v-enter-to`, `.v-leave-from`, `.v-leave-to`)。如果这些类被意外重写,则可能导致过渡行为异常[^4]。 ```css /* 定义自定义过渡 */ .custom-transition-class { &-enter-active, &-leave-active { transition: opacity 0.5s ease; } &-enter-from, &-leave-to { opacity: 0; } /* 如果涉及高度变化 */ &-enter-active, &-leave-active { max-height: 20rem; /* 设定最大高度 */ overflow: hidden; transition-property: all; } &-enter-from, &-leave-to { max-height: 0; } } ``` #### 3. 处理特定情况下的布局影响 对于某些特殊情形下(比如父容器设置了固定宽度),即使指定了 `height:auto` 加上 `transition` ,也可能因为浏览器渲染机制而未能成功触发动画。此时可以通过调整定位方式来规避此问题,例如采用绝对定位并配合 `max-height` 来实现平滑展开收起的效果[^5]。 ```html <div class="wrapper"> <transition name="custom-transition-name"> <p v-if="show" style="position:absolute;">This is a paragraph that will fade in and out.</p> </transition> </div> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值