-
-
Notifications
You must be signed in to change notification settings - Fork 33.9k
Closed
Description
Vue.js version
2.1.4
Reproduction Link
https://jsfiddle.net/acies/6x2g6v02/
Steps to reproduce
- Create a
<transition>tag. - Set the transition tag to not rely on CSS with
:css="false", as well as trigger onappear. - Add a
v-showfor an element inside the<transition>tag. - Add an
@entercallback for the transition, and calldoneinside the callback.
What is Expected?
The element toggled with v-show is visually present (i.e. not display: none) when in the @enter callback—even before the call to done—just as it is with v-if.
What is actually happening?
Vue keeps (defers removal of) display: noneuntil after @after-enter.
Callbacks for v-if and v-show are thus not interchangeable.
E.g.: starting an animation on @enter that relies on retrieving the global position of an element would work for v-if, but fail for v-show due to the lack of offsets/offset parents as a result of display: none.
Relevant:
vue/src/platforms/web/runtime/directives/show.js
Lines 31 to 32 in ae93d2b
| enter(vnode) | |
| el.style.display = el.__vOriginalDisplay |
Metadata
Metadata
Assignees
Labels
No labels