Vue-49、Vue技术实现动画效果

1、首先,在Vue项目中的src/components文件夹下创建一个名为AnimatedBox.vue的文件。

2、编辑AnimatedBox.vue文件,添加以下代码:

javascript 复制代码
<template>
  <div class="animated-box" @click="toggle">
    <transition name="fade">
      <div v-if="isVisible" class="box"></div>
    </transition>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isVisible: true,
    };
  },
  methods: {
    toggle() {
      this.isVisible = !this.isVisible;
    },
  },
};
</script>

<style scoped>
.animated-box {
  width: 100px;
  height: 100px;
  background-color: lightblue;
  position: relative;
}

.box {
  width: 50px;
  height: 50px;
  background-color: red;
  position: absolute;
  top: 25px;
  left: 25px;
}

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

在这个示例中,我们创建了一个名为AnimatedBox的Vue组件。当用户点击这个组件时,它会切换isVisible数据属性的值,从而触发动画效果。我们使用组件包裹
元素,并为其添加一个名为fade的过渡类。然后,我们在

3、最后,在需要使用AnimatedBox组件的地方引入它,例如在App.vue文件中:

javascript 复制代码
<template>
  <div id="app">
    <AnimatedBox />
  </div>
</template>

<script>
import AnimatedBox from './components/AnimatedBox.vue';

export default {
  components: {
    AnimatedBox,
  },
};
</script>

现在,当你点击AnimatedBox组件时,红色方块会以淡入淡出的方式显示和隐藏。

4、其他方法

javascript 复制代码
<template>
    <div>
        <button @click="showOrHide">显示/隐藏</button>
        <transition name="hello" appear>
            <h1  v-show="isShow">你好啊</h1>
        </transition>

    </div>
</template>

<script>
    export default {
        name: "Test2",
        data(){
            return{
                isShow:true,
            }
        },
        methods:{
            showOrHide(){
                this.isShow = !this.isShow;
            }
        }
    }
</script>

<style scoped>
    h1{
        background-color: orange;
    }
    .hello-enter-active{
        animation: a 1s;
    }
    .hello-leave-active{
        animation: a 1s reverse;
    }
    @keyframes a {
        from{
            transform: translateX(-100px);
        }
        to{
            transform: translateX(0px);
        }
    }
</style>
javascript 复制代码
<template>
    <div>
        <button @click="showOrHide">显示/隐藏</button>
        <transition name="hello" appear>
            <h1  v-show="isShow">你好啊</h1>
        </transition>

    </div>
</template>

<script>
    export default {
        name: "Test3",
        data(){
            return{
                isShow:true,
            }
        },
        methods:{
            showOrHide(){
                this.isShow = !this.isShow;
            }
        }
    }
</script>

<style scoped>
    h1{
        background-color: orange;
        transition: 0.5s linear;
    }
    /*进入的起点*/
    .hello-enter{
        transform: translateX(-100%);
    }
    /*进入的终点*/
    .hello-enter-to{
        transform: translateX(0);
    }
    /*离开的起点*/
    .hello-leave{
        transform: translateX(0);
    }

    /*离开的终点*/
    .hello-leave-to{
        transform: translateX(-100%);
    }




</style>

多个元素过度

javascript 复制代码
<template>
    <div>
        <button @click="showOrHide">显示/隐藏</button>
        <transition-group name="hello" appear>
            <h1  v-show="isShow" key="1">你好啊</h1>
            <h1  v-show="isShow" key="2">你好啊2</h1>
        </transition-group>

    </div>
</template>

<script>
    export default {
        name: "Test4",
        data(){
            return{
                isShow:true,
            }
        },
        methods:{
            showOrHide(){
                this.isShow = !this.isShow;
            }
        }
    }
</script>

<style scoped>
    h1{
        background-color: orange;
        transition: 0.5s linear;
    }
    /*进入的起点*/
    .hello-enter{
        transform: translateX(-100%);
    }
    /*进入的终点*/
    .hello-enter-to{
        transform: translateX(0);
    }
    /*离开的起点*/
    .hello-leave{
        transform: translateX(0);
    }

    /*离开的终点*/
    .hello-leave-to{
        transform: translateX(-100%);
    }
</style>

5、引入第三方库(Animate.csss):

地址:https://animate.style/

引入:

javascript 复制代码
npm install animate.css

导入你的文件

javascript 复制代码
import 'animate.css';

使用:

javascript 复制代码
<template>
    <div>
        <button @click="showOrHide">显示/隐藏</button>
        <transition appear name="animate__animated animate__bounce"  enter-active-class="animate__tada" leave-active-class="animate__backOutUp">
            <h1  v-show="isShow" key="1">你好啊test5</h1>
        </transition>

    </div>
</template>

<script>
    import 'animate.css';
    export default {
        name: "Test5",
        data(){
            return{
                isShow:true,
            }
        },
        methods:{
            showOrHide(){
                this.isShow = !this.isShow;
            }
        }
    }
</script>

<style scoped>
    h1{
        background-color: orange;
    }

</style>

6、总结

相关推荐
Vicky&James11 分钟前
WPF到Web的无缝过渡:英雄联盟客户端项目OpenSilver迁移实战
前端·wpf
m0_7482336415 分钟前
RabbitMQ 进阶
android·前端·后端
不想有bug的小菜鸟23 分钟前
vue3使用iframe全屏展示pdf效果
前端·pdf
m0_7482386324 分钟前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
u01005596025 分钟前
前端代理,解决跨域问题讲解
前端
quitv30 分钟前
react脚手架配置别名
前端·javascript·react.js
m0_5287238139 分钟前
前端如何进行性能优化
前端·性能优化
化作繁星40 分钟前
在 Vue 3 中,如何缓存和复用动态组件
前端·vue.js·缓存
一粒沙-1 小时前
iOS 将GIF图分享至微信
前端·ios
graywen1 小时前
从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
前端