【问题标题】:Vue 2 Transition not workingVue 2 转换不起作用
【发布时间】:2017-07-29 21:54:32
【问题描述】:

我不知道我的代码哪里出错了。这应该是一个简单的过渡。当我单击按钮时,消息正确显示,但根本没有发生淡入淡出过渡。

<template>
    <div>
        <transition name="fade">
            <message v-show="showMessage" class="tr pop-up-message">
                <p slot="header">This is Header</p>
                <span slot="body">This is Body</span>
            </message>
        </transition>

        <div v-if="!showMessage" class="block" @click.prevent="showMessage = true">
            <a class="button is-primary">Primary</a>
        </div>
        <div v-else-if="showMessage" class="block" @click.prevent="showMessage = false">
            <a class="button is-primary">Primary</a>
        </div>
    </div>
</template>

<script>
    import message from './Message.vue'
    export default {
        components:{
            'message': message,
        }, 
        data(){
            return{
                showMessage: false
            }
        },
    }
</script>

【问题讨论】:

    标签: vue.js transition vuejs2


    【解决方案1】:

    我有两个 &lt;p&gt; 标签紧挨着,如下所示

    <p v-if="!isControlling">Take control of the camera by clicking</p>
    <p v-else>Press <kbd>Esc</kbd> to exit camera. <kbd>W</kbd> <kbd>A</kbd> <kbd>S</kbd> <kbd>D</kbd> <kbd>Space</kbd> <kbd>Shift</kbd> to move. Mouse to look.</p>
    

    他们只是没有工作。看起来 Vue 在标记中重用了相同的 &lt;p&gt; 标签来渲染两者。为每个添加一个key 使转换工作(感谢@Mark)。修复应该如下所示

    <p key="asd" v-if="!isControlling">Take control of the camera by clicking</p>
    <p key="asf" v-else>Press <kbd>Esc</kbd> to exit camera. <kbd>W</kbd> <kbd>A</kbd> <kbd>S</kbd> <kbd>D</kbd> <kbd>Space</kbd> <kbd>Shift</kbd> to move. Mouse to look.</p>
    

    【讨论】:

    • 是的,这是每个人都容易混淆的常见错误。我认为这也必须添加到 vue 过渡官方文档中。
    【解决方案2】:

    您是否也添加了这些 CSS:

    .fade-enter-active, .fade-leave-active {
        transition: opacity .5s
    }
    .fade-enter, .fade-leave-to /* .fade-leave-active in <2.1.8 */ {
        opacity: 0
    }
    

    我已尝试使用上面的 CSS 重现您的代码 here。

    【讨论】:

    • 这些过渡应该在 .vue 文件中还是应该在任何其他 css 中?
    • 最好在同一个 vue 文件中使用它,除非你也在其他文件中重复使用它。
    • @Saurabh 我目前遇到了一个类似的问题,我的 Vue 转换没有触发,但是,我的数据似乎是被动的。如果您能看一下并分享您对我哪里出错的想法,那就太好了stackoverflow.com/questions/51022673/…
    • 尝试使用 v-if 并尝试将 key 属性添加到
    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 2021-08-08
    • 1970-01-01
    • 2021-09-18
    • 2022-01-26
    • 2017-04-29
    • 2018-10-01
    • 2017-11-29
    相关资源
    最近更新 更多