Vue动画之transition和keyframes关键帧动画

1.实现keyframes关键帧动画效果

利用data控制类名来控制过渡效果。 

<style>

     @keyframes leftToRight {
        0% {
          transform: translateX(-100px);
        }
        50% {
          transform: translateX(-50px);
        }
        100% {
          transform: translateX(0px);
        }
      }
     //给animation类名加上动画效果
      .animation {
        animation: leftToRight 3s;
      } 
</style>

const app = Vue.createApp({

       data(){
             return {
                 animate:{
                    animation:false  
                } 
            },
     methods:{
                handleClick(){
                    //切换动画效果的显示
                    this.animate.animation = this.animate.animation
                }
        },     
      template:`

                <div>
                            //通过对象里面的类名决定是否加载动画效果  
                            <div :class="animate">HelloWorld</div>
                            <div @click="handleClick">切换</div>
                </div>
            `

})

2.实现transition 过渡效果

 利用data控制类名来控制过渡效果。 

 

<style>
    
      .transition {
        transition: 3s background-color ease;
      }
      .blue {
        background: blue;
      }
      .green {
        background: green;
      }

</style>
const app = Vue.createApp({

   data(){
            return {
                    animate:{
                            transition:true,
                            green:true,
                            blue:false
                    }
            }
   },
  methods:{

            handleClick(){
                     //控制data对象中的类名来控制样式
                     this.animate.animation = !this.animate.animation;
                     this.animate.blue = !this.animate.blue;
                     this.animate.green = !this.animate.green;
            }
    },

  template:`
             <div>
                <div :class="animate">
                    hello world
                </div>
                <button @click="handleClick">切换</button>
            </div>
    `

})

 3.通过style来控制transition效果

 

const app = Vue.createApp({

    data(){
        return {
                styleObj: {
                background: "blue",
              },
        }
    },
     methods: {
        handleClick() {
        //手动切换data里面的styleobj的样式 这样不用在<style></style>里面写样式
          if (this.styleObj.background === "blue") {
            this.styleObj.background = "green";
          } else {
            this.styleObj.background = "blue";
          }
        },
      },
        template: `
    
            <div>
                <div :class="transition" :style="styleObj">
                    hello world
                </div>
                <button @click="handleClick">切换</button>
            </div>
        `,

})

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js提供了一个名为`<transition>`的组件,用于实现过渡动画效果。您可以在Vue组件的模板中使用`<transition>`组件来包裹要添加动画的元素。 下面是一个简单的例子,展示了如何使用`<transition>`组件实现一个简单的淡入淡出效果: ```html <template> <div> <button @click="show = !show">Toggle</button> <transition name="fade"> <p v-if="show">Hello Vue!</p> </transition> </div> </template> <script> export default { data() { return { show: false }; } }; </script> <style> .fade-enter-active, .fade-leave-active { transition: opacity 0.5s; } .fade-enter, .fade-leave-to { opacity: 0; } </style> ``` 在上述代码中,我们使用了`<transition>`组件将要添加动画的`<p>`元素包裹起来。通过控制`show`属性的值,我们可以在"Toggle"按钮的点击事件中切换`<p>`元素的显示与隐藏。 同时,我们还定义了一些CSS类名来定义过渡动画的效果。在这个例子中,我们使用了名为"fade"的过渡名称,并定义了两对CSS类名,分别是`.fade-enter-active`和`.fade-leave-active`以及`.fade-enter`和`.fade-leave-to`。这些类名可以通过CSS属性来指定动画效果,比如这里使用了`transition`属性来指定`opacity`的过渡效果。 当`<p>`元素出现时,会触发`.fade-enter-active`和`.fade-enter`类名,从而实现淡入效果;当`<p>`元素消失时,会触发`.fade-leave-active`和`.fade-leave-to`类名,从而实现淡出效果。 您可以根据自己的需求定制更多的过渡效果,比如缩放、位移等。更多关于Vue.js过渡动画的详细用法,请参考Vue.js官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值