vue.js知识点-transition的钩子函数应用(实例展示)

本小结通过transition的钩子函数实现小球半场动画

头条-静敏的编程秘诀-vue教程合集

知识点1:入场、出厂方法
  • beforeEnter
    表示动画入场之前,此时,动画尚未开始,可以在beforeEnter中设置元素开始动画之前的起始样式

  • enter
    表示动画开始之后的样式,这里可是设置小球完成动画之后的,结束状态
    enter(el,done)
    el:动画钩子函数的第一个参数:el,标识,要执行动画的DOM原始,是原生的JS DOM对象
    done:实现动画立刻消失,这里的done就是afterEnter函数的引用
    .offsetWidth:这句话没有实际作用,但不写,出不来动画效果,有点坑

  • afterEnter
    动画完成之后会调用afterEnter

知识点2:v-on绑定监听事件
可以简写为@
示例展示
<body>
    <div id="app">
        <input type="button" value="加入购物车" @click="flag=!flag">

        <!-- //transition 动画包裹元素 -->
        <!-- v-on:  可以简写为 @ -->
        <!-- 借助transition的钩子函数实现半场动画 -->
        <transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter">
            <div class="ball" v-show="flag"></div>
        </transition>

    </div>

    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                flag: false,
            },
            
            methods: {
                //动画钩子函数的第一个参数:el,标识,要执行动画的DOM原始,是原生的JS DOM对象
                //el是通过 document.getElementByID('') 的方式实现的
                beforeEnter(el) {
                    //表示动画入场之前,此时,动画尚未开始,可以在beforeEnter中设置元素开始动画之前的起始样式
                    el.style.transforem="translate(0,0)"

                },
                enter(el,done) {
                    // 下面这句话没有实际作用,但不写,出不来动画效果,是个坑
                    // 其实说明el.offsetWidth会强制刷新![在这里插入图片描述](https://img-blog.csdnimg.cn/20200312130424377.gif)
                    el.offsetWidth
                    //表示动画开始之后的样式,这里可是设置小球完成动画之后的,结束状态
                    el.style.transform="translate(150px,350px)"
                    el.style.transition=" all 1s ease"
                    // 实现动画立刻消失
                    // 这里的done就是afterEnter函数的引用
                    done()

                },
                afterEnter(el) {
                    // 动画完成之后会调用afterEnter
                    this.flag=!this.flag
                }
            },

        });
    </script>
</body>
<style>
        .ball {
            width: 15px;
            height: 15px;
            border-radius: 50%;
            background-color: red;

        }
    </style>

效果
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,在Vue.js的入口文件中,需要引入vue-router,并在Vue实例中注入: ```javascript import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(VueRouter) const router = new VueRouter({ routes: [ { path: '/login', name: 'login', component: Login }, { path: '/register', name: 'register', component: Register } ] }) new Vue({ router, render: h => h(App) }).$mount('#app') ``` 在上述代码中,我们定义了两个路由,分别对应登录和注册组件。 接下来,在登录和注册组件中,我们可以添加mounted和beforeDestroy钩子函数,用于在组件挂载和销毁时执行一些操作。 ```javascript <template> <div> <!-- login form --> </div> </template> <script> export default { name: 'Login', mounted() { console.log('Login component mounted') }, beforeDestroy() { console.log('Login component destroyed') } } </script> ``` ```javascript <template> <div> <!-- register form --> </div> </template> <script> export default { name: 'Register', mounted() { console.log('Register component mounted') }, beforeDestroy() { console.log('Register component destroyed') } } </script> ``` 以上代码中,我们在组件的mounted钩子函数中输出了一条日志,表示组件已经挂载。在组件的beforeDestroy钩子函数中,我们也输出了一条日志,表示组件即将被销毁。 这样,我们就可以利用vue-router实现登录和注册组件之间的切换,并为各个组件添加mounted和beforeDestroy钩子函数

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值