Vue学习(四)

31、组件之使用内容分发slot:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>组件之使用内容分发slottitle>
    <style>
    style>
    <script src="./lib/vue.js">script>
    <link href="./lib/bootstrap.css" rel="stylesheet">
head>
<body>
<div id="app">
    <bs-panel>
        
        <h1 slot="header">php开源框架h1>
        
        <p slot="body">
            这是内容...
        p>
        
        abc
    bs-panel>
div>

<script type="text/x-template" id="bsPanel">
    <div>
        <slot name="header">没有传递内容</slot>
        <slot name="body">没有传递内容</slot>
        <slot></slot>
    </div>
script>
body>
<script>
    const bsPanel = {
        template: '#bsPanel'
    };
    new Vue({
        el: '#app',
        /*定义局部组件*/
        components: {bsPanel}
    })
script>
html>

32、组件之使用内容分发slot构建bootstrap面板panel:

 1 DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>组件之使用内容分发slot构建bootstrap面板paneltitle>
 6     <style>
 7     style>
 8     <script src="./lib/vue.js">script>
 9     <link href="http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
10 head>
11 <body>
12 <div id="app">
13     <form action="" class="form-horizontal">
14         <bs-panel>
15             <h1 slot="title">php开源框架h1>
16             
17             <bs-input title="标题" value="后盾人" slot="body">bs-input>
18             <bs-input title="点击数" value="100" slot="body">bs-input>
19         bs-panel>
20     form>
21 div>
22 
27 <script type="text/x-template" id="bsPanel">
28     <div class="panel panel-default">
29         <div class="panel-heading">
30             <h3 class="panel-title">
31                 <slot name="title"></slot>
32             </h3>
33         </div>
34         <div class="panel-body">
35             <slot name="body"></slot>
36         </div>
37     </div>
38 script>
39 <script type="text/x-template" id="bsInput">
40     <div class="form-group">
41         <label for="" class="col-sm-2 control-label">{{title}}</label>
42         <div class="col-sm-10">
43             <input type="text" class="form-control" :value="value" />
44         </div>
45     </div>
46 script>
47 body>
48 <script>
49     var bsPanel = {
50         template: '#bsPanel'
51     }
52     var bsInput = {
53         template: '#bsInput',
54         props:['title','value']
55     }
56     new Vue({
57         el: '#app',
58         /*定义局部组件*/
59         components: {bsPanel,bsInput}
60     })
61 script>
62 html>

33、组件之父组件使用scope定义子组件模板结构实例:

 1 DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>组件之父组件使用scope定义子组件模板结构实例title>
 6     <style>
 7     style>
 8     <script src="./lib/vue.js">script>
 9     <link href="http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
10 head>
11 <body>
12 <div id="app">
13     <list :data="news">
14         
18         <template scope="v">
19             <li>
20                 <h1>{{v.field.title}}h1>
21                 <span>{{v.slist}}span>
22             li>
23         template>
24     list>
25 div>
26 
31 <script type="text/x-template" id="list">
32    <ul>
33        
37        <slot v-for="v in data" :field="v" slist="你好"></slot>
38    </ul>
39 script>
40 
41 body>
42 <script>
43     const list = {
44         template: '#list',
45         props:['data']
46     };
47     new Vue({
48         el: '#app',
49         /*定义局部组件*/
50         components: {list},
51         data: {
52             news: [
53                 {title:'高等代数'},
54                 {title:'数学分析'}
55             ]
56         }
57     })
58 script>
59 html>

34、组件之使用动态组件灵活设置网页布局:

 1 DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>组件之使用动态组件灵活设置网页布局title>
 6     <style>
 7     style>
 8     <script src="./lib/vue.js">script>
 9     <link href="http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
10 head>
11 <body>
12 <div id="app">
13     <div :is="formType">div>
14     <input type="radio" v-model="formType" value="testInput" /> 文本框
15     <input type="radio" v-model="formType" value="testTextarea" /> 文本域
16 div>
17 body>
18 <script>
19     const testInput = {
20         template: "
" 21 }; 22 const testTextarea = { 23 template: "
" 24 }; 25 new Vue({ 26 el: '#app', 27 /*定义局部组件*/ 28 components: {testInput,testTextarea}, 29 data: { 30 formType: 'testInput' 31 } 32 }) 33 script> 34 html>

35、css过渡动作实例:

 1 DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>css过渡动作实例title>
 6     <style>
 7         /*
 8             v 为变量名
 9             .v-enter:定义刚进来时的类样式
10             .v-enter-active:定义进来过程中的类样式
11             .v-enter-to:定义进来后的类样式
12             .v-leave-to:定义出去后的类样式
13             .v-leave-active:定义出去过程中的类样式
14             .v-leave:定义刚出去的类样式
15         */
16         .test-enter,.test-leave-to {
17             opacity: 0;
18         }
19         .test-enter-to {
20             color: green;
21             border: 1px solid orange;
22         }
23         .test-enter-active,.test-leave-active {
24             color: aqua;
25             transition: all 2s;
26         }
27         test-leave {
28             color: blue;
29         }
30     style>
31     <script src="./lib/vue.js">script>
32     <link href="http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
33 head>
34 <body>
35 <div id="app">
36     <button @click="type=!type">切换button>
37     <transition name="test">
38         <h1 v-if="type">css过渡动作实例h1>
39     transition>
40 div>
41 body>
42 <script>
43     new Vue({
44         el: '#app',
45         data: {
46             type:false
47         }
48     })
49 script>
50 html>

36、使用animate动画库控制:

 1 DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>使用animate动画库控制title>
 6     <style>
 7         /*
 8             v 为变量名
 9             .v-enter:定义刚进来时的类样式
10             .v-enter-active:定义进来过程中的类样式
11             .v-enter-to:定义进来后的类样式
12             .v-leave-to:定义出去后的类样式
13             .v-leave-active:定义出去过程中的类样式
14             .v-leave:定义刚出去的类样式
15         */
16     style>
17     <script src="./lib/vue.js">script>
18     <link href="./lib/animate.css" rel="stylesheet" />
19 head>
20 <body>
21 <div id="app">
22     <button @click="type=!type">切换button>
23     <transition enter-active-class="animated slideInDown" leave-active-class="animated zoomOut">
24         <h1 v-if="type">css过渡动作实例h1>
25     transition>
26 div>
27 body>
28 <script>
29     new Vue({
30         el: '#app',
31         data: {
32             type:false
33         }
34     })
35 script>
36 html>

37、使用animation与transform实现vue的动画效果:

 1 DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>使用animation与transform实现vue的动画效果title>
 6     <style>
 7         /*
 8             v 为变量名
 9             .v-enter:定义刚进来时的类样式
10             .v-enter-active:定义进来过程中的类样式
11             .v-enter-to:定义进来后的类样式
12             .v-leave-to:定义出去后的类样式
13             .v-leave-active:定义出去过程中的类样式
14             .v-leave:定义刚出去的类样式
15         */
16         .test-enter-active {
17             animation: show-in 1s;
18             transition: all 1s;
19         }
20         .test-leave-active {
21             animation: hide-out 1s;
22             transition: all 1s;
23         }
24         .test-enter,.test-leave-to {
25             opacity: 0;
26         }
27         @keyframes show-in {
28             0% {
29                 transform: translate(200px, 0);
30             }
31             100% {
32                 transform: translate(0,0px);
33             }
34         }
35         @keyframes hide-out {
36             0% {
37                 transform: translate(0,0px);
38             }
39             100% {
40                 transform: translate(200px,0);
41             }
42         }
43     style>
44     <script src="./lib/vue.js">script>
45     <link href="http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
46 head>
47 <body>
48 <div id="app">
49     <button @click="type=!type">切换button>
50     <transition name="test">
51         <h1 v-if="type">css过渡动作实例h1>
52     transition>
53 div>
54 body>
55 <script>
56     new Vue({
57         el: '#app',
58         data: {
59             type:false
60         }
61     })
62 script>
63 html>

38、使用js库控制vue过渡动作实例:

 1 DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>使用js库控制vue过渡动作实例title>
 6     <style>
 7         /*
 8             v 为变量名
 9             .v-enter:定义刚进来时的类样式
10             .v-enter-active:定义进来过程中的类样式
11             .v-enter-to:定义进来后的类样式
12             .v-leave-to:定义出去后的类样式
13             .v-leave-active:定义出去过程中的类样式
14             .v-leave:定义刚出去的类样式
15         */
16     style>
17     <script src="./lib/vue.js">script>
18     <script src="./lib/velocity.js">script>
19 head>
20 <body>
21 <div id="app">
22     <button @click="type=!type">切换button>
23     
29     <transition @before-enter="beforeEnter" @enter="enter" @leave="leave" :css="false">
30         <h1 v-if="type">css过渡动作实例h1>
31     transition>
32 div>
33 body>
34 <script>
35     new Vue({
36         el: '#app',
37         data: {
38             type:false
39         },
40         methods: {
41             /*el:定义样式的元素*/
42             beforeEnter(el){
43                 el.style.opacity=0;
44             },
45             /*done:进来后的回调函数,必须使用done告诉vue动画执行完了*/
46             enter(el,done){
47                 /*velocity.js库的函数*/
48                 Velocity(el,{opacity:1},{duration: 2000, complete: done})
49             },
50             leave(el,done){
51                 Velocity(el,{opacity:0,rotateZ:'-90deg'},{duration: 2000,complete: done})
52             }
53         }
54     })
55 script>
56 html>

39、自定义指令详解:

 1 DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>自定义指令详解title>
 6     <script src="./lib/vue.js">script>
 7     <script src="./lib/velocity.js">script>
 8 head>
 9 <body>
10 <div id="app">
11     <span v-star="color">标题span>
12     <input type="text" v-model="color" v-focus>
13     <span v-end="color">内容span>
14 div>
15 body>
16 <script>
17     /*
18         指令的钩子函数:
19         bind:指令绑定的时候调用
20         inserted:指令插入父元素的时候调用
21         update:绑定的元素更新的时候调用
22     */
23     /*定义全局自定义指令*/
24     Vue.directive('end',{
25         /*
26         el:用来设置绑定元素的样式
27         bind:用来获取绑定元素的属性
28         */
29         bind(el,bind) {
30             const color = bind.value ? bind.value : 'red';
31             el.style.cssText = "color:"+color;
32         },
33         update(el,bind) {
34             const color = bind.value ? bind.value : 'red';
35             el.style.cssText = "color:"+color;
36         }
37     });
38 
39     new Vue({
40         el: '#app',
41         data: {
42             color:'red'
43         },
44         /*自定义局部指令*/
45         directives: {
46             // bind 和 update 的结合
47             star(el,bind) {
48                 const color = bind.value ? bind.value : 'red';
49                 el.style.cssText = "color:"+color;
50             },
51             focus: {
52                 inserted(el,bind) {
53                     el.focus();
54                 }
55             }
56         }
57     })
58 script>
59 html>

40、vue-router之实例:

 1 DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>vue-router之实例title>
 6     <script src="./lib/vue.js">script>
 7     <script src="./lib/vue-router.js">script>
 8 head>
 9 <body>
10 <div id="app">
11     
16     <router-link to="/php">PHProuter-link>
17     <router-link to="/cms">CMSrouter-link>
18     <router-view>router-view>
19 div>
20 body>
21 <script>
22     // 定义组件
23     const php = {
24         template: "

你好,世界!

" 25 }; 26 const cms = { 27 template: "

我来了,你呢?

" 28 }; 29 //定义路由器,然后把组件交给路由器 30 /*第一种定义方式*/ 31 let route = new VueRouter({ 32 routes: [ 33 {path: '/php', component: php}, 34 {path: '/cms', component: cms} 35 ] 36 }); 37 /*第二种定义方式*/ 38 let routes=[ 39 {path: '/php', component: php}, 40 {path: '/cms', component: cms} 41 ]; 42 //routes:routes可以写成routes 43 // let router = new VueRouter({routes:routes}); 44 let router = new VueRouter({routes}); 45 new Vue({ 46 el: '#app', 47 //把路由器注入主组件中,这样才有效果 48 /* 49 * 注意:router 与 routes 的区别: 50 * router 是一个机制,相当于一个管理者,它来管理路由。 51 * routes 是一组路由,把上面的每一条路由组合起来,形成一个数组。 52 * route,它是一条路由。 53 * */ 54 //如果 router的名称和router的一样可以直接写成 router 即可 55 // router: router 56 router 57 }) 58 script> 59 html>

你可能感兴趣的:(Vue学习(四))