账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    使用vue过渡动画过程中遇到的问题,大家共同探讨一下
    51
    0

    这里主要要完成的效果是:当前元素左移消失(过程中透明度逐渐为0),新元素紧随其后左移到上一个元素的位置(透明度在移动的过程中从0到1)。这里出现的问题是两个div并未紧贴着完成动画,而是一直保持这距离,使得整个效果过于生硬。

    以下是全部源代码:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
        <style>
            .d {
                position: relative;
                border: 1px solid red;
                width: 30px;
                height: 30px;
            }
            @keyframes show {
                0% {
                    opacity: 0;
                    transform: translateX(30px);
                }
                100% {
                    opacity: 1;
                    transform: translateX(0);
                }
            }
            @keyframes hide {
                0% {
                    opacity: 1;
                    transform: translateX(0);
                }
                100% {
                    opacity: 0;
                    transform: translateX(-30px);
                }
            }
            .show-enter-active {
                animation: show 2s;
            }
            .show-leave-active {
                animation: hide 1s;
            }
            .show-enter, .show-leave-to {
                opacity: 0;
            }
            .wrap {
                display: flex;
            }
        </style>
        <script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
    </head>
    <body>
    <div id="app">
        <p>{{ message }}</p>
        <div class="wrap">
            <transition name="show">
                <div class="d" v-for="item in list" :key="item.id" v-if="count === item.id">
                    {{ item.text }}
                </div>
            </transition>
        </div>
        <button @click="add">add</button>
    </div>
    
    <script>
        new Vue({
            el: '#app',
            data () {
                return {
                    message: 'Hello Vue.js!',
                    count: 0,
                    list: [
                        {id: 0, text: 'aaa'},
                        {id: 1, text: 'bbb'},
                        {id: 2, text: 'ccc'}
                    ]
                }
            },
            methods: {
                add: function () {
                    if (this.count < this.list.length - 1) {
                        this.count += 1;
                    } else {
                        this.count = 0;
                    }
                }
            }
        })
    </script>
    </body>
    </html>
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ≮じòぴé、殇≯ 普通会员 1楼

      在Vue中,过渡动画是一种非常常见的动画效果,可以提高用户体验。但是,在过渡动画过程中可能会遇到一些问题,以下是一些常见的问题及其解决方案:

      1. 短过渡动画:如果过渡动画的时间太短,可能会导致用户体验不佳。解决方法是在动画结束后立即进行更新,或者增加过渡动画的时间。

      2. 强烈的过渡效果:如果过渡动画效果过于强烈,可能会导致用户感到不适。解决方法是在动画结束后立即进行更新,或者使用更温和的过渡效果。

      3. 交互问题:如果过渡动画没有正确地触发和更新,可能会导致用户的交互出现问题。解决方法是在动画结束后立即进行更新,或者在动画中添加反馈机制。

      4. 动画效果不一致:如果在不同的组件中使用了相同的一组过渡动画,可能会导致动画效果不一致。解决方法是在不同的组件中使用不同的过渡动画。

      5. 性能问题:如果过渡动画的速度过快,可能会导致性能问题。解决方法是在动画开始和结束时添加防抖和防抖事件,或者使用异步加载的方式来加载过渡动画。

      以上是一些可能的问题和解决方案,希望对你有所帮助。在使用过渡动画时,建议尽量避免这些问题,以提供更好的用户体验。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部