Vue 动画:CSS 动画原理 & animate.css 库的使用 & 同时使用过渡和动画 & Js 动画与 Velocity.js 的结合 & 多个元素或组件的过渡 & 动画封装

本文详细介绍了Vue中CSS动画的原理,如何使用animate.css库,以及如何同时应用过渡和动画。还讨论了Vue与Velocity.js结合的JS动画,多个元素或组件的过渡动画,以及Vue列表过渡和动画封装的方法。
摘要由CSDN通过智能技术生成

Vue 中 CSS 动画原理

<div id="app">
  <div v-if="show">hello world</div>
  <button @click="handleClick">切换</button>
</div>
<script>
  var vm = new Vue({
    
    el: '#app',
    data: {
    
      show: true
    },
    methods: {
    
      handleClick() {
    
        this.show = !this.show;
      }
    }
  })
</script>

现在希望 hello world 在隐藏和显示的时候加上渐隐渐现的动画效果。

在想要添加动画的标签外部添加 <transiton></transiton> 标签,Vue 会自动帮助我们构建一个动画的流程。

<transiton></transiton> 包裹的内容有一个过渡的动画效果,可以通过 name 属性给该标签起一个名字。

  • 从隐藏状态变成显示状态:
  • 从显示状态变成隐藏状态:

fade-enter 中的前缀 fade 是 transition 中 name 定义的名字。如果 transition 没有定义 name 属性,前缀默认为 v。即:v-enter,v-enter-active,……

<head>
  <style>
    .fade-enter, .fade-leave-to {
    
      opacity: 0;
    }
    .fade-enter-active, .fade-leave-active {
    
      transition: opacity 3s
    }
  </style>
</head>

<body>
  <div id="app">
    <transition name="fade">
      <div v-if="show">hello world</div>
    </transition>
    <button @click="handleClick">切换</button>
  </div>
  <script>
    var vm = new Vue({
    
      el: '#app',
      data: {
    
        show: true
      },
      methods: {
    
        handleClick() {
    
          this.show = !this.show;
        }
      }
    })
  </script>
</body>

通过在某一时刻自动向 div 元素上增加一些 class 的底层原理,Vue 帮助我们实现了 CSS 过渡动画效果。

在 Vue 中使用 animate.css 库

使用 @keyframes 实现动画效果
<head>
  <style>
    @keyframes bounce-in {
    
      0% {
    
        transform: scale(0)
      }
      50% {
    
        transform: scale(1.5)
      }
      100% {
    
        transform: scale(1)
      }
    }

    .fade-enter-active {
    
      transform-origin: left center;
      animation: bounce-in 1s;
    }
    .fade-leave-active {
    
      transform-origin: left center;
      animation: bounce-in 1s reverse;
    }
  </style>
</head>

<body>
  <div id="app">
    <transition name="fade">
      <div v-if="show">hello world</div>
    </transition>
    <button @click="handleClick">切换</button>
  </div>
  <script>
    var vm = new Vue({
    
      el: '#app',
      data: {
    
        show: true
      },
      methods: {
    
        handleClick() {
    
          this.show = !this.show;
        
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值