4 动画及组件

作者: 0efb885b580c | 来源:发表于2016-11-16 15:17 被阅读18次

    vue-> 过渡(动画) (它的本质走的是css3: transtion ,animation)

    方法一
    toggle(){  //methods
        this.bSign=!this.bSign;
    }
      <div id="div1" v-show="bSign" transition="fade"></div>//动画名fade  data:{data:{bSign:true}}
    .fade-transition{
        transition: 1s all ease;    
    }
    .fade-enter{//进入
        opacity: 0;
    }
    .fade-leave{//离开
        opacity: 0;
        transform: translateX(200px);
    }
    方法二          (推荐)        引入 animate.css
    methods:{
        toggle(){
            this.bSign=!this.bSign;
        }
    },
    transitions:{ //定义所有动画名称   vue的方法
        bounce:{
                enterClass:'zoomInLeft',//animate.css的动画
                leaveClass:'zoomOutRight'
        }
    }
    <div id="div1" class="animated" v-show="bSign" transition="bounce"></div>点击的时候执行bounce
    

    组件 (就是一个大对象)

    组件里面放数据:data必须是函数的形式,函数必须返回一个对象(json)
    1.     全局注册组件      (不常用)
         var oExt=Vue.extend({//继承  创建一个组件构造器
                 data(){//函数形式
                 return {//返回一个json  return
                     msg:'Hellow word'
                 };
             }
             template:'<h3>{{msg}}</h3>'
         });
    Vue.component('oExt',oExt);//全局注册组件
    2.    局部组件  (放到某个组件内部) (不常用)
         var oExt=Vue.extend({
             template:'<h3>{{msg}}</h3>',
             data(){
                 return {
                     msg:'Hellow'
                 }
             }
         });
         var vm=new Vue({
             el:'#box',
             components:{ //局部组件
                 oExt:oExt
             }
         });
    3.   另一种编写方式  全局
    <o-ext></o-ext>
    Vue.component('o-ext',{
        template:'<p>123435</p>'
    });
    var vm=new Vue({
        el:'#box'
    });
    4.另一种编写方式2  局部
    var vm=new Vue({
        el:'#box',
        components:{
            'my-aaa':{
                data(){
                    return {
                        msg:'welcome vue'
                    }
                },
                methods:{
                    change(){
                        this.msg='changed';
                    }
                },
                template:'<h2 @click="change">标题2->{{msg}}</h2>'
                }
            }
        });
    

    组件-模版

    1.就是上面说的这种
            template:'<h2 @click="change">标题2->{{msg}}</h2>'
    2.单独放到某个地方
          a).
            <my-aaa></my-aaa>//显示
            <script type="x-aaa" id="aaa">   //模板  为了不让浏览器认为他是写js的  在type更改任意类型就行
                <h2>标题2->{{msg}}</h2>
                <ul>
                    <li>1111</li>
                    <li>222</li>
                    <li>3333</li>
                    <li>1111</li>
                </ul>
            </script>
            var vm=new Vue({
                el:'#box',
                components:{//组件  注意这块是components
                    'my-aaa':{
                        data(){
                            return {
                                msg:'welcome vue'
                            }
                        }
                        template:'#aaa'
                    }
                }
            });
    b).用<template></template>包裹   (常用模板)
        <template id="aaa">
        <h1>标题1</h1>
        <ul>
            <li v-for="val in arr">
                {{val}}
            </li>
        </ul>
        </template>
    

    动态组件

    <input type="button" @click="a='one'" value="one组件">
    <input type="button" @click="a='two'" value="two组件">
    <component :is="type"></component>//根据type判断是那个模板
    var vm=new Vue({
        el:'#box',
        data:{
            type:'one'//默认显示组件一
        },
        components:{
            'one':{
                template:'<h2>我是one组件</h2>'
            },
            'two':{
                template:'<h2>我是two组件</h2>'
            }
        }
    });
    

    相关文章

      网友评论

        本文标题:4 动画及组件

        本文链接:https://www.haomeiwen.com/subject/bhrrpttx.html