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、总结

相关推荐
慢知行3 分钟前
从 0 到 1 搭建 Vite+Vue3+TS 工程模板:能上手操作的指南
前端·vue.js·typescript
咖啡の猫5 分钟前
Vue解决开发环境 Ajax 跨域问题
前端·vue.js·ajax
盼哥PyAI实验室10 分钟前
纯前端打造个人成长网站:零后端、零部署、零服务器的实践分享
运维·服务器·前端·javascript·echarts·个人开发
nppe611 分钟前
NestJs 从入门到实战项目笔记
前端·后端
景彡先生19 分钟前
Python Flask详解:从入门到实战,轻量级Web框架的魅力
前端·python·flask
qq_4203620320 分钟前
AI在前端工作中的应用
前端·人工智能·sse
Lsx_22 分钟前
详解ECharts中的convertToPixel和convertFromPixel
前端·javascript·echarts
吃饺子不吃馅32 分钟前
Web端PPT应用画布方案:Canvas 还是 DOM?
前端·架构·canvas
晴殇i40 分钟前
Web端PDF预览方法详解
前端·javascript·vue.js
加油乐1 小时前
解决 iOS 端输入框聚焦时页面上移问题
前端·javascript·ios