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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue transition-group 第一次不生效
    32
    0

    各位大佬,我在做购物车小球的时候发现一个问题,第一次购买的时候,没有小球动画,以后的几次都有,有知道是什么引起的么?

    <template>
        <div @click="addCart($event)"></div>
        
        <div class="ball-container">
            <transition-group name="drop"
                v-on:before-enter="beforeEnter"
                v-on:enter="enter"
                v-on:after-enter="afterEnter"
            >
                <div class="ball" v-show="ball.show" v-for="(ball, index) in balls" :key="ball.id">
                    <div class="inner inner-hook"></div>
                </div>
            </transition-group>
        </div>
    <template>
    
    <script>
        export default {
            data () {
                return {
                    balls: []
                }
            },
            methods: {
                addBall ($event) {
                    this.balls.push({
                        show: true,
                        id: this.balls.length,
                        x: $event.clientX,
                        y: $event.clientY
                    })
                },
                beforeEnter (el) {
                  let count = this.balls.length
                  let x = this.balls[count-1].x - 32
                  let y = -(window.innerHeight - this.balls[count-1].y -22 )
    
                  el.style.webkitTransform = `translate3d(0, ${y}px, 0)`
                  el.style.transform = `translate3d(${x - 16}px, ${y}px, 0)`
    
                  let inner = el.getElementsByClassName('inner-hook')[0]
                  inner.style.webkitTransform = `translate3d(${x}px, 0, 0)`
                  inner.style.transform = `translate3d(${x}px, 0, 0)`
                },
                enter (el, done) {
                  this.$nextTick(() => {
                    el.style.webkitTransform = 'translate3d(0, 0, 0)'
                    el.style.transform = 'translate3d(0, 0, 0)'
                    let inner = el.getElementsByClassName('inner-hook')[0]
                    inner.style.webkitTransform = 'translate3d(0, 0, 0)'
                    inner.style.transform = 'translate3d(0, 0, 0)'
                    done()
                  })
                },
                afterEnter (el) {
                  setTimeout(() => {
                    el.style.display = 'none'
                  }, 1000)
                }
            }
        }
    </script>
    <style>
      .ball-container 
        .ball
          position fixed
          left 32px
          bottom 22px
          z-index 200
          transition all 1s
          .inner
            width 16px
            height 16px
            border-radius 50%
            background rgb(0, 160, 220)
    .drop-enter-active
      transition all 1s ease
    </style>
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 共 0 条
    • ζ旧梦已逝ζ 普通会员 1楼

      Vue Transition Group 是一个过渡动画组件,可以帮助你实现更优雅的过渡效果。但是,如果第一次使用 Transition Group,并没有生效,可能是因为以下原因:

      1. CSS 样式错误:确保你的 Transition Group 样式正确。如果在你的 CSS 文件中使用了 Transition Group,那么它需要与你的其他 CSS 样式同时存在。如果一个样式没有生效,可能是因为你的 CSS 代码中有其他影响其生效的样式。

      2. 缺少 Transition Group 元素:确保你已经在你的 HTML 中添加了 Transition Group 元素。如果你的 HTML 文件中没有包含这个元素,那么它将无法被 Vue 组件正常引用。

      3. JavaScript 设置:确保你的 JavaScript 设置正确。如果在你的 Vue 组件中使用了 Transition Group,那么它需要在你的 JavaScript 中设置。

      4. CSS 配置:确保你的 CSS 配置正确。如果在你的 CSS 文件中使用了 Transition Group,那么它需要与你的其他 CSS 配置同时存在。

      5. 浏览器兼容性问题:确保你的浏览器兼容性正确。如果在某些情况下,你的 Transition Group 仍然无法生效,那么可能是浏览器兼容性问题。

      如果你已经检查了以上所有可能的原因,但是仍然无法解决问题,那么可能需要尝试其他的方法,例如查看 Vue 的官方文档,或者寻求其他开发者的帮助。

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