美文网首页
Vue - 过渡与动画 transition

Vue - 过渡与动画 transition

作者: Z丿Sir | 来源:发表于2019-05-21 17:55 被阅读0次

本文主要目的记录自己在项目中所接触到的,方便日后记忆😁

transition钩子函数:

<transition
  v-on:before-enter="beforeEnter"
  v-on:enter="enter"
  v-on:after-enter="afterEnter"
  v-on:enter-cancelled="enterCancelled"
  v-on:before-leave="beforeLeave"
  v-on:leave="leave"
  v-on:after-leave="afterLeave"
  v-on:leave-cancelled="leaveCancelled"
>
</transition>
methods: {
  // 过渡进入
  // 设置过渡进入之前的组件状态
  beforeEnter: function (el) {
    // ...
  },
  // 设置过渡进入完成时的组件状态
  enter: function (el, done) {
    // ...
    done()
  },
  // 设置过渡进入完成之后的组件状态
  afterEnter: function (el) {
    // ...
  },
  enterCancelled: function (el) {
    // ...
  },
  // 过渡离开
  // 设置过渡离开之前的组件状态
  beforeLeave: function (el) {
    // ...
  },
  // 设置过渡离开完成时地组件状态
  leave: function (el, done) {
    // ...
    done()
  },
  // 设置过渡离开完成之后的组件状态
  afterLeave: function (el) {
    // ...
  },
  // leaveCancelled 只用于 v-show 中
  leaveCancelled: function (el) {
    // ...
  }
}

接下来就记录下本次项目所写的东西啦,效果就是飞入购物车的效果。。。

直接上代码

//通过vuex获取state.ball数据
computed: {
   ball () {
     return this.$store.state.ball
   }
 }
<transition name="ball" //自定义过渡类名通过 name=‘’
    @before-enter="beforeEnter"
    @enter="enter"
    @after-enter="afterEnter"
    @css="true"
 >
<div class="addcart-mask" v-show="ball.show">
    <img class="mask-item"/>
</div>
</transition>
//利用钩子函数写了一些相关的飞入购物车的代码
beforeEnter (el) {
 // 通过浏览器方法获取所有按钮的位置
 let rect = this.ball.el.getBoundingClientRect()
 // 获取购物车的位置
 let rectEL = document.getElementsByClassName('ball-rect')[0].getBoundingClientRect()
 // 拿到当前小球
 let ball = document.getElementsByClassName('mask-item')[0]
 // 计算按钮和购物车之间的差值
 let x = (rectEL.left + 16) - (rect.left + rect.width / 2)
 // 距离顶部的差值
 let y = rect.top + rect.height / 2 - rectEL.top + 5 - 16
 el.style.transform = 'translate3d(0,' + y + 'px,0)'
 ball.style.transform = 'translate3d(-' + x + 'px,0,0)'
 ball.src = this.ball.img
},
enter (el) {
  let a = el.offsetHeight
  el.a = a
  el.style.transform = 'translate3d(0,0,0)'
  document.getElementsByClassName('mask-item')[0].style.transform = 'translate3d(0,0,0)'
},
afterEnter () {
  this.ball.show = false
 }
//通过贝塞尔曲线实现飞入时是曲线的效果
.ball-enter-active{
  transition: 1s cubic-bezier(.22,.85,.59,1.08)
}
.ball-enter-active .mask-item{
  transition: 1s cubic-bezier(0,0,0,0)
}

贝塞尔曲线

最终效果


屏幕录制.gif

相关文章

  • vue03

    vue03 vue过渡 自带 动画:.fade-transition{transition: 1s all ea...

  • Vue动画

    Vue动画 Vue动画 CSS transition 在进入/离开的过渡中,会有 6 个 class 切换。 对于...

  • 过渡与动画

    @(HTML5)[过渡, 动画] [TOC] 五、过渡与动画 过渡 transition-property:过渡属...

  • Vue - 过渡与动画 transition

    本文主要目的记录自己在项目中所接触到的,方便日后记忆? transition钩子函数: 接下来就记录下本次项目所写...

  • vue中的三种动画引用方法

    一.vue.transition vue-transition在过渡动画的不同时期通过切换不同class,给绑定元...

  • CSS3过渡动画

    过渡动画 transition属性简介transition是网页上的过渡动画,变化的逐渐过渡效果,简称过渡动画!列...

  • css动画过渡

    title: css动画和transition过渡toc: truedate: 2017-03-20 vue组件 ...

  • CSS3动画

    css3动画包括过渡,形变,动画 过渡transition: 指定过渡样式:transition-property...

  • CSS动画相关

    1.transition动画过渡属性 transition-property 设置过渡属性 transition-...

  • 前端09

    过渡动画 transition产生动画border-radius圆角设置过渡的时间:transition-dura...

网友评论

      本文标题:Vue - 过渡与动画 transition

      本文链接:https://www.haomeiwen.com/subject/cnnjzqtx.html