vue动画

vue

1、使用transition定义动画

//定义过渡的样式

/*动画刚开始时的状态,动画结束时的状态*/

.move-enter-active,.move-leave-active{

transition:all 2s;

}

/*动画过渡的css样式*/

.move-enter,.move-leave-to{

opacity:0;

transform:translateX(150px);

}

//使用vue中的transition动画组件

<transition name="move">

<h2 v-if="show" class="title">Hello world...</h2>

</transition>

//创建vue的实例

new Vue({

el: ".box",

data: {

show: true

},

methods: {

toggle() {

this.show = !this.show

}

}

})

2、结合animate.css动画库定义transition动画

  • 使用transition组件,并且定义动画进入(enter-active)时的类名和动画离开(leave-active)时的类名

      <div class="box">

    <transition name="myblock" enter-active-class="animated bounceInRight" leave-active-class="animated bounceOutLeft">

    <div v-if="show" class="block"></div>

    </transition>

    <button @click="toggle">切换</button>

    </div>

  • 创建vue实例改变元素的显示与隐藏从而触发动画效果

      new Vue({

    el: ".box",

    data: {

    show: true

    },

    methods: {

    toggle() {

    this.show = !this.show

    }

    }

    })

3、监听vue动画的过渡事件

  • 使用transition定义动画

      <div class="box">

    <transition name="myblock" enter-active-class="animated bounceInRight"

    leave-active-class="animated bounceOutLeft"

    @before-enter="beforeEnter" <!--动画进入前-->

    @enter="enter" <!--动画开始进入-->

    @after-enter="afterEnter" <!--动画进入后-->

    @before-leave="beforeLeave" <!--动画离开前-->

    @leave="leave" <!--动画进开始离开-->

    @after-leave="afterLeave"> <!--动画离开后-->

    <div v-if="show" class="block"></div> <!--动画进入前-->

    </transition>

    <button @click="toggle">切换</button>

    </div>

  • 创建vue实例

      new Vue({

    el: ".box",

    data: {

    show: true

    },

    methods: {

    toggle() {

    this.show = !this.show

    },

    beforeEnter() {

    alert("开始动画之前.....")

    },

    enter() {

    alert("动画开始......")

    },

    afterEnter() {

    alert("动画结束......")

    },

    beforeLeave(){

    alert("离开之前")

    },

    leave(){

    alert("即将要离开....")

    },

    afterLeave(){

    alert("离开已经结束")

    }

    }

    })

二、vue-router

1、为什么要使用vue-router?

  • 实现SPA(single page application 减少客户端和服务器之间请求加载时间)

      <body>

    <div class="box">

    <h1>vue-router使用</h1>

    <!-- 创建单页应用的导航 -->

    <nav>

    <!-- vue-router的导航链接 -->

    <router-link to="/">主页</router-link>

    <router-link to="/hot">热门话题</router-link>

    <router-link to="/tech">科技动态</router-link>

    <router-link to="/dev">开发者资讯</router-link>

    </nav>

    <!-- 页面中需要根据导航切换的内容的容器 -->

    <router-view></router-view>

    </div>

    <script src="./js/vue.js"></script>

    <script src="./js/vue-router.js"></script>

    <script>

    // 定义不同的路由切换时需要显示的内容

    // var Hot={template:"<h1>这是热门话题部分</h1>"}

    // var Tech={template:"<h1>这是科技动态部分</h1>"}

    // var Dev={template:"<h1>这是开发者资讯部分</h1>"}

    var Index=Vue.component("Index",{

    template:"<h1>这是主页部分</h1>"

    })

    var Hot=Vue.component("Hot",{

    template:"<h1>这是热门话题部分</h1>"

    })

    var Tech=Vue.component("Tech",{

    template:"<h1>这是科技动态部分</h1>"

    })

    var Dev=Vue.component("Dev",{

    template:"<h1>这是开发者资讯部分</h1>"

    })

    //配置路由规则

    var routes=[{

    path:"/",

    component:Index

    },{

    path:"/hot",

    component:Hot

    },{

    path:"/tech",

    component:Tech

    },{

    path:"/dev",

    component:Dev

    }]

    //创建vue-router的实例

    var router = new VueRouter({

    routes:routes

    })

    //最后将vue-router的实例挂载到vue的实例

    new Vue({

    el:".box",

    router:router

    })

    </script>

    </body>

2、如何使用vue-router

  • 公用style样式

      <style>

    *{

    margin:0;

    padding:0;

    }

    body{

    font-size:15px;

    }

    nav{

    width: 100%;

    height: 45px;

    font-size:0;

    }

    nav>a{

    display:inline-block;

    height: 45px;

    width:25%;

    line-height:45px;

    box-sizing:border-box;

    text-align:center;

    font-size:18px;

    }

    .content{

    border:1px solid skyblue ;

    text-align:center;

    min-height:400px;

    }

    </style>

01、vue-router路由传参

  • html结构

      <div class="container">

    <h1 class="text-center text-muted">vue-router使用</h1>

    <!-- 创建单页应用的导航 -->

    <nav>

    <!-- vue-router的导航链接 -->

    <router-link to="/AI">热门话题</router-link>

    <router-link to="/tech">科技动态</router-link>

    <router-link to="/dev/js/3">开发者资讯</router-link>

    <router-link to="/user?name=张三&age=22">用户中心</router-link>

    </nav>

    <!-- 页面中需要根据导航切换的内容的容器 -->

    <div class="content">

    <router-view></router-view>

    </div>

    </div>

  • script结构

      <script src="./js/vue.js"></script>

    <script src="./js/vue-router.js"></script>

    <script>

    // 1、定义不同的路由切换时需要显示的内容

    var Hot=Vue.component("Hot",{

    template:"<h1>这是热门话题部分,{{$route.params.type}}</h1>",

    created:function(){

    alert("话题类型:"+this.$route.params.type)

    }

    })

    var Tech=Vue.component("Tech",{

    template:"<h1>这是科技动态部分</h1>"

    })

    var Dev=Vue.component("Dev",{

    template:"<h1>这是开发者资讯部分,获取文章的类型:{{$route.params.type}},获取文章的页码:{{$route.params.page}}</h1>"

    })

    var User=Vue.component("User",{

    template:"<div><h1>这是用户中心,{{$route.query.name}},{{$route.query.age}}</h1></div>"

    })

    //2、配置路由规则

    var routes=[{

    path:"/:type",

    component:Hot

    },{

    path:"/tech",

    component:Tech

    },{

    path:"/dev/:type/:page",

    component:Dev

    },{

    path:"/user",

    component:User

    }]

    //3、创建vue-router的实例

    var router = new VueRouter({

    routes:routes

    })

    //4、最后将vue-router的实例挂载到vue的实例

    new Vue({

    el:".container",

    router

    })

    </script>

02、vue-router路由嵌套

  • html结构

      <div class="container">

    <h1 class="text-center text-muted">vue-router使用</h1>

    <!-- 创建单页应用的导航 -->

    <nav>

    <!-- vue-router的导航链接 -->

    <router-link to="/">热门话题</router-link>

    <router-link to="/tech">科技动态</router-link>

    <router-link to="/dev">开发者资讯</router-link>

    <router-link to="/user">用户中心</router-link>

    </nav>

    <!-- 页面中需要根据导航切换的内容的容器 -->

    <div class="content">

    <router-view></router-view>

    </div>

    </div>

    <template >

    <div>

    <h1>这是用户中心</h1>

    <p>

    <router-link class="btn btn-primary" to="/user/login">登录</router-link>

    <router-link class="btn btn-success" to="/user/reg">注册</router-link>

    </p>

    </div>

    </template>

  • script结构

      <script src="./js/vue.js"></script>

    <script src="./js/vue-router.js"></script>

    <script>

    // 1、定义不同的路由切换时需要显示的内容

    var Hot=Vue.component("Hot",{

    template:"<h1>这是热门话题部分</h1>",

    })

    var Tech=Vue.component("Tech",{

    template:"<h1>这是科技动态部分</h1>"

    })

    var Dev=Vue.component("Dev",{

    template:"<h1>这是开发者资讯部分</h1>"

    })

    var User=Vue.component("User",{

    template:"#user"

    })

    //定义登录组件

    var Login=Vue.component("Login",{

    template:"<h1 class='text-center'>这是登录组件</h1>"

    })

    var Reg=Vue.component("Reg",{

    template:"<h1 class='text-center'>这是登录组件</h1>"

    })

    var NotFound=Vue.component("Error",{

    template:"<h1 class='text-center'>404 Page Not Found!</h1>"

    })

    //2、配置路由规则

    var routes=[{

    path:"/",

    component:Hot

    },{

    path:"/tech",

    component:Tech

    },{

    path:"/dev",

    component:Dev

    },{

    path:"/user",

    component:User,

    //配置子路由的路由规则

    children:[{

    path:"",

    component:Login

    },{

    path:"reg",

    component:Reg

    }]

    },{

    path:"*",

    component:Error

    }]

    //3、创建vue-router的实例

    var router = new VueRouter({

    routes:routes

    })

    //4、最后将vue-router的实例挂载到vue的实例

    new Vue({

    el:".container",

    router

    })

    </script>

03、vue-router路由跳转的监听

  • html结构

      <div class="container">

    <h1 class="text-center text-muted">vue-router使用</h1>

    <!-- 创建单页应用的导航 -->

    <nav>

    <!-- vue-router的导航链接 -->

    <router-link to="/">热门话题</router-link>

    <router-link to="/tech">科技动态</router-link>

    <router-link to="/dev">开发者资讯</router-link>

    <router-link to="/user?name=Alice">用户中心</router-link>

    </nav>

    <!-- 页面中需要根据导航切换的内容的容器 -->

    <div class="content">

    <router-view></router-view>

    </div>

    </div>

    <template >

    <div>

    <h1>这是用户中心</h1>

    <p>

    <router-link class="btn btn-primary" to="/user/">登录</router-link>

    <router-link class="btn btn-success" to="/user/reg">注册</router-link>

    </p>

    <router-view></router-view>

    </div>

    </template>

  • script结构

      <script src="./js/vue.js"></script>

    <script src="./js/vue-router.js"></script>

    <script>

    // 1、定义不同的路由切换时需要显示的内容

    var Hot=Vue.component("Hot",{

    template:"<h1>这是热门话题部分</h1>",

    })

    var Tech=Vue.component("Tech",{

    template:"<h1>这是科技动态部分</h1>"

    })

    var Dev=Vue.component("Dev",{

    template:"<h1>这是开发者资讯部分</h1>"

    })

    var User=Vue.component("User",{

    template:"#user"

    })

    //定义登录组件

    var Login=Vue.component("Login",{

    template:"<h1 class='text-center'>这是登录组件</h1>"

    })

    var Reg=Vue.component("Reg",{

    template:"<h1 class='text-center'>这是登录组件</h1>"

    })

    var Error=Vue.component("Error",{

    template:"<h1 class='text-center'>404 Page Not Found!</h1>"

    })

    //2、配置路由规则

    var routes=[{

    //name代表组件的名称

    name:"主页",

    path:"/",

    component:Hot

    },{

    name:"科技动态",

    path:"/tech",

    component:Tech

    },{

    name:"开发者资讯",

    path:"/dev",

    component:Dev

    },{

    path:"/user",

    component:User,

    //配置子路由的路由规则

    children:[{

    name:"登录",

    path:"",

    component:Login

    },{

    name:"注册",

    path:"reg",

    component:Reg

    }]

    },{

    path:"*",

    component:Error

    }]

    //3、创建vue-router的实例

    var router = new VueRouter({

    routes:routes

    })

    //4、最后将vue-router的实例挂载到vue的实例

    new Vue({

    el:".container",

    router:router,

    watch:{

    "$route":function(target,current){

    //target代表路由即将要跳转到的目标路径

    //current代表当前路由路径

    console.log("路由即将要跳转至-->",target)

    console.log("当前路由路径是-->",target)

    }

    }

    })

    </script>

3、vue-cli

以上是 vue动画 的全部内容, 来源链接: utcz.com/z/380276.html

回到顶部