第四天

帅比萌擦擦* 提交于 2020-03-12 08:43:28

 Vue中的动画:

第一种:

先写<transition>元素这个是vue官方提供的,在style里写.v-enter和.v-leave-to,虽然没有类名

但是可以在style样式中写例如:

 .v-enter,

        .v-leave-to{

            opacity: 0;

            transform: translateX(100px);

        }

        .v-enter-active,

        .v-leave-active{

            transition: all 1s ease;

        };

在transition元素中加个name属性就可以改变v-的前缀,比如<transition name=“my”>上面的v-enter就要改成my-enter

第二种:

使用第三方类:如animate.css网上找到的到,同样的在<transition enter-active-class+“animated +想要的效果”>

enter-active-class=“animated +一样的 :duration=“设置时间毫秒值,可以使用入场时长和离场时长使用对象

{enter:200,leave:400}

第三种:动画的钩子函数

 

实现半场的就只需要入场的例子:小球入场:半场动画

  <!-- 后面加函数名字 -->

        <transition

    <transition> 
@before-enter="beforeEnter"

            @enter="enter"                   

            @after-enter="afterEnter"

        >

            <div class="ball" v-show="flag"></div>

        </transition>   
 methods: {  
                beforeEnter(el){
                    //设置起始和末尾位置
                    el.style.transform = "translate(0, 0)";
                    
                },
                enter(el,done){
                    //表示动画开始之后的样式,可以设置
                    el.offsetWidth//不写这个没有动画效果
                    el.style.transform = "translate(150px, 400px)";
                    el.style.transition = "all 1s ease"
                    done();
                },
                afterEnter(el){
                    this.flag = !this.flag;
                }
            },

 

列表动画:

在实现列表过渡的时候,如果需要过渡元素的的时候,是通过v-for创建出来的饿话

就要用<transition-group>

配合使用可以让后面的元素渐渐的飘上来v-move和active

给就<transition-group>加上appear<transition-group appear>有个入场效果;

如果不指定tag的话就是添加span比如<transition-group appear tag=“ul”>;

vue的组件学习:

 <div id="app">
        <my-com1></my-com1>
    </div>
    
    <script>
        //1.
        var com1 = Vue.extend({
            template:'<h3>123456789</h3>'
        });
        //2.
        Vue.component('myCom1',com1);
        var vm = new Vue({
            el: '#app',
            data: {},
            methods: {}
        });

第二种:

   <div id="app">
        <my-l></my-l>
    </div>
    <script>
        Vue.component('myL',{
            template:'<div><h3>1321321231</h3><span>lxl<span><div>'
        })
        var vm = new Vue({
            el: '#app',
            data: {},
            methods: {}
        });

第三种:

这个方法可以在外部写有智能的提示比在spript里写更好,更方便;

定义一个私有的组件:competents:{}

组件中的data和methods:

 <div id="app">
        <my1></my1>
    </div>
    <script>
        Vue.component('my1',{
            template:'<h1>123456+++++{{msg}}</h1>',
            data:function(){
                return {
                    msg:'123456'
                }
            }
        })

例子:登入和注册的切换:

多个组件的过渡:

包起来就行了通过mode属性来实现切换模式:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!