Vue 学习11——Vue过渡与动画(二)【动态组件如何实现transition】/ 如何在vue中进入第三方依赖 / vue插件

目录

㋀㏭

☪ App.vue中如何进行组件A和组件B的切换

◆ transition

❶ a.vue

❷ b.vue

❸ App.vue

㊫ 跟我写代码

➫ 总结

☪ CSS过渡

☪ JS过渡

◆ 内容

Ⅰ 内容截图

Ⅱ 方法

Ⅲ 例子

◆ 实战

1.实现上面同样的效果只有监听三个阶段

2.引入jquery第三方库(重点引入第三方依赖)

3.写具体demo

4.jquery引入动画效果

☪ Vue 插件

◆ 下载和使用

❶ demo

 


☪ App.vue中如何进行组件A和组件B的切换

练习题

问题:如果有组件A和组件B,同时引入Vue.app里面,在Vue.app中如何利用transition实现动态组件?

答:一看到动态组件就应该想到:is和data中的定义,参考文章。和这个demo类似不过多了一个transition切换效果

◆ transition

❶ a.vue

<!-- a.vue -->
<template>
	<div>
		这是ComA
	</div>
</template>

<script>
</script>

<style>
</style>

❷ b.vue

<!-- b.vue -->
<template>
	<div>
		这是ComB
	</div>
</template>

<script>
</script>

<style>
</style>

❸ App.vue


<!-- App.vue -->
<template>
	<div>
		<button @click="toggleCom">toggleCom</button>
		<div :is="currentView">
			<p is="com-a"></p>
			<p is="com-b"></p>
		</div>
		
	</div>
</template>
 
<script>
	import comA from './components/a'
	import comB from './components/b'
	
	export default {
		data(){
			return {
				show:true,
				currentView:'com-a'
			}
		},components: {
			comA,comB
		},methods:{
			toggleCom(){
				if(this.currentView==='com-a'){
					this.currentView = 'com-b'
				}else{
					this.currentView = 'com-a'
				}
				console.log('toggleCom');
			}
		}
	}
</script>
 
<style>
</style>

㊫ 跟我写代码

➫ 总结

<div class="ab">
            <div :is="currentView">
                <!-- <div is="com-a"></div> -->
                <!-- <com-a></com-a> 上面与下面效果等同,但是使用is好处是实现动态组件
                1.:is --* 跟着的是变量,需要在data中声明
                2.is --* 跟着的是组件中划线名称
                
                -->

                
            </div>
        </div>

☪ CSS过渡

☪ JS过渡

前言:js比css控制的东西稍微多一些,而且可以使用第三方的库比如说jquery,官方vue.js文档都是event对应的就是v-on指令

内容

Ⅰ 内容截图

Ⅱ 方法

Ⅲ 例子

实战

1.实现上面同样的效果只有监听三个阶段

......
    methods: {
			beforeEnter: function(el) {
				$(el).css({})
			},
			enter: function(el, done) {
				$(el).animate({})
			},
			leave: function(el, done) {
				$(el).animate({})
			}
		}

2.引入jquery第三方库

jquery要放在index.html里面,它不会打包处理,只会最为入口页面往里添加东西~

3.写具体demo

<!-- App.vue -->
<template>
	<div>
		
		<button @click="show=!show">Toggle</button>
		<br>
		<div>
			<transition 
			@before-enter="beforeEnter" 
			@enter="enter" 
			@leave="leave" 
			:css="false"><!--  v-on:leave="leave"-@leave..  / v-bind:css="false" 简写 :css="false"-->
				<p v-show='show'>i am a show</p>
			</transition>
		</div>

	</div>
</template>

<script>
	import comA from './components/a'
	import comB from './components/b'

	export default {
		data() {
			return {
				show: false,
				currentView: 'com-b'
			}
		},
		components: {
			comA,
			comB
		},
		methods: {
			beforeEnter: function(el) { 
				console.log('beforeEnter')
				$(el).css({
					left: '-500px',
					opacity: 0
				})
			},
			enter: function(el, done) {
				console.log('enter')
				$(el).animate({
					left: 0,
					opacity: 1
				}, {
					duration: 1500,
					complete: done
				})
			},
			leave: function(el, done) {
				console.log('leave')
				$(el).animate({
					left: '500px',
					opacity: 0
				}, {
					duration: 1500,
					complete: done
				})
			}
		}

	}
</script>

<style>

</style>

4.jquery引入动画效果

☪ Vue 插件

下载和使用

npm install vue-router --save // 安装保存到package.json

❶ demo

// 使用插件 1.import(import VueRouter from 'vue-router') 2.Vue的全局方法Vue.use(VueRouter)
// 问:这样的一些插件,通常都有哪些方式会被我们在项目中使用呢?
// 答:
// way1.首先要实例化,然后通过参数的形式放到根组件里面,这样才算vr正式被引用到我们项目里面

/* main.js */
import Vue from 'vue'
import App from './App'
import router from './router'
import VueRouter from 'vue-router'
// 等同于 var VueRouter = require('vue-router')

Vue.use(VueRouter)

Vue.config.productionTip = false



/* eslint-disable no-new */
Vue.directive('color', {
	bind: function(el, binding) {
		el.style.color = binding.value;
	},
})

let vr = new VueRouter();
new Vue({
	vr,
	el: '#app',
	/* es6语法 */
	/* render:function(h){
		return h(App)
	} */
	render: (h) => h(App),
})
发布了234 篇原创文章 · 获赞 52 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/Sicily_winner/article/details/103970968
今日推荐