()
| 11432 | } |
| 11433 | |
| 11434 | function performLeave() { |
| 11435 | // the delayed leave may have already been cancelled |
| 11436 | if (cb.cancelled) { //取消过度动画标志 |
| 11437 | return |
| 11438 | } |
| 11439 | // record leaving element |
| 11440 | if (!vnode.data.show) { |
| 11441 | (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode; |
| 11442 | } |
| 11443 | beforeLeave && beforeLeave(el); //离开动画的钩子函数 |
| 11444 | if (expectsCSS) { |
| 11445 | addTransitionClass(el, leaveClass);// 为真实dom添加 css 过度动画leaveClass类 |
| 11446 | addTransitionClass(el, leaveActiveClass);//激活离开动画的css 动画过度类 |
| 11447 | nextFrame(function () { |
| 11448 | removeTransitionClass(el, leaveClass);// 为真实dom删除 css 过度动画leaveClass类 |
| 11449 | if (!cb.cancelled) { //取消过度动画标志 |
| 11450 | addTransitionClass(el, leaveToClass); //离开动画的css 动画过度类 |
| 11451 | if (!userWantsControl) { |
| 11452 | if (isValidDuration(explicitLeaveDuration)) { //如果是数字 |
| 11453 | setTimeout(cb, explicitLeaveDuration); //执行回调函数 _leaveCb |
| 11454 | } else { |
| 11455 | // 获取动画的信息,执行动画。 |
| 11456 | whenTransitionEnds( |
| 11457 | el, //真实的dom |
| 11458 | type, //动画类型 |
| 11459 | cb//执行回调函数 _leaveCb |
| 11460 | ); // |
| 11461 | } |
| 11462 | } |
| 11463 | } |
| 11464 | }); |
| 11465 | } |
| 11466 | leave && leave(el, cb); |
| 11467 | if (!expectsCSS && !userWantsControl) { |
| 11468 | cb(); |
| 11469 | } |
| 11470 | } |
| 11471 | } |
| 11472 | |
| 11473 | // only used in dev mode |
no test coverage detected