IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue动画和路由传值 -> 正文阅读

[JavaScript知识库]vue动画和路由传值

一、过度&动画介绍?????

Vue在插入、更新或者移除 DOM时,提供多种不同方式的应用过渡效果

1.在CSS过渡和动画中自动应用class.

2.可以配合使用第三方 CSS 动画库,如 Animate.css

3.在过渡钩子函数中使用JavaScript直接操作 DOM.

4.可以配合使用第三方JavaScript 动画库,如 Velocity.js

二、组件过渡

Vue提供了 transitIon的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡。

当插入或删除包含在transition组件中的元素时,Vue将会做以下处理:

1.自动检索目标元素是否应用了CSS过渡或动画,如果是,在恰当的时机添加/删除CSS类名。

2.如果过渡组件提供了JavaScript钩子函数,这些钩子函数将在恰当的时机被调用。

3.如果没有找到JavaScript钩子并且也没有检测到CSS过渡/动画,DOM操作(插入/删除)在下一帧中立即执行。

三、过度的类名:(在进入/离开的过渡中,会有6个class 切换。)

1. v-enter:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。

2. v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。

3. v-enter-to: 2.1.8版及以上定义进入过渡的结束状态。在元素被插入之后下一帧生效(与此同时v-enter被移除),在过渡/动画完成之后移除。

4. v-leave:定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。

5. v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。

6. v-leave-to:2.1.8版及以上定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效(与此同时v-leave被删除),在过渡/动画完成之后移除。

四、自定义过渡的类名:过度的类名:

我们可以通过以下 attribute 来自定义过渡类名:

1.enter-class

2.enter-active-class

3.enter-to-class?(2.1.8+)

4.leave-class

5.leave-active-class

6.leave-to-class?(2.1.8+)

他们的优先级高于普通的类名,这对于 Vue 的过渡系统和其他第三方 CSS 动画库,如?Animate.css?结合使用十分有用。

五、javascript钩子函数

1.一个元素出现的过渡包括四个节点:before-enter, enter, after-enter, enter-cancelled,分别代表开始出现前,出现中,出现后。元素的离开也一样。借助V-on可以在这些节点挂载钩子函数,用于在元素过度的各节点触发这些函数。

2.出现前主要用于配置一些参数:如将opacity设置为0,enter是进入的动画过程函数。同理before-leave是离开前的状态设置,leave对应的是消失的过程函数。

3.以上钩子函数会被传入被过渡元素el作为第一个参数。

4.js钩子函数依赖Velocity

Velocity是一个具有与jQuery的$ .animate()相同的API的动画引擎。它适用于和不使用jQuery。它速度非常快,它具有彩色动画,变换,循环,缓动,SVG支持和滚动功能。这是jQuery和CSS转换的最佳组合。

六、路由信息对象

1.一个路由对象(route object)表示当前激活的路由的状态信息,包含了当前 URL 解析得到的信息,还有 URL 匹配到的路由记录(route records)。

2.路由对象是不可变(immutable)的,每次成功的导航后都会产生一个新的对象。

3.路由对象出现在多个地方:

1)在组件内,即this.$route

2)在$route观察者回调内

3)router.match(location)的返回值

七、路由信息对象的属性

1. $route.path

-类型:string

-字符串,对应当前路由的路径,总是解析为绝对路径,如“/foo/bar"

2.$route.params

-类型: Object

-一个key/value对象,包含了动态片段和全匹配片段,如果没有路由参数,就是一个空对象。

3.$route.query

-类型: Object

-一个key/value对象,表示URL 查询参数。例如,对于路径

/foo?user=1,则有$route.query. user ==1,如果没有查询参数.则是个空对象。

4.$route.hash

-类型:tring

-当前路由的hash 值(带#),如果没有hash 值,则为空字符串

5.$route.fullPath

一类型:string

-完成解析后的URL,包含查询参数和hash 的完整路径。

6.$route.name

-当前路由的名称,如果有的话。(查看命名路由)

7.$route.matched

-一个数组,包含当前路由的所有嵌套路径片段的路由记录。路由记录就是routes配置数组中的对象副本(还有在children 数组).

八、路由

1.<router-link>即: API<router-link>组件支持用户在具体路由功能的应用中(点击)导肌。通过属性指定目标地址,默认渲染成带有正确链接的<a/>标签,可以通过配置tag属性生成别的标签.另外,当目标路由成功激活时,链接元素自动设置一个表示激活的CSS类名。另外,router-link可以直接添加class和style来写样式。

2.<router-view>:组件是一个功能组件,渲染路径匹配到的视图组件。<router-view>渲染的组件还可以内嵌自己的<router-view>,根据嵌套路径,渲染嵌套组件。

1)注:无论是HTML5历史模式还是哈希模式,它的表现行为一致,所以,当你要切换路由模式,或者在IE9降级使用哈希模式,无须作任何变动。

2)在HTML5 history模式下,router-link会拦截点击事件,让浏览器不在重新加载页面。

九、路由传值的具体思路:

一、js

1.引入<Vue Router>

2.创建对象

3.使用Vue Router( Vue.use )

4.创建路由:

(1)调用组件。

(2)路由对象。

(3)放在router对象中。(把对象放在Vue Router中)

(4)对象放入Vue中。

二、DOM

1.<Vue Router>导航信息

2.<route-view>放入、切换的数组组件(渲染组件)

十、实例:

index.html:

<!doctype html>
<html>

<head>
  <title>VUE练习</title>
  <link rel="stylesheet" href="./css/index.css" type="text/css">
</head>

<body>
  <div id="e">
    <h2>路由</h2>
    <p>
      <router-link to="/foo">对象</router-link>
      <router-link to="/bar">工具</router-link>
    </p>
    <router-view></router-view>
  </div>
  <script src="./bundle.js"></script>
</body>

</html>

index.js:

import _ from 'lodash';
import Vue from 'vue';
import router from './router';

new Vue({
  el: "#e",
  data: {
  },
  router,
  methods: {
  },
  components: {},
})

router.js:

import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);

const Foo = { template: '<div>foo</div>' };
const Bar = { template: '<div>bar</div>' };

const router = new VueRouter({
    routes:[
        { path: "/foo", component: Foo }, { path: "/bar", component: Bar }
    ]
})

export default router;

最终效果图:

动态路由:

index.html:

<!doctype html>
<html>

<head>
  <title>VUE练习</title>
  <link rel="stylesheet" href="./css/index.css" type="text/css">
</head>

<body>
  <div id="e">
    <h2>路由</h2>
    <p>
      <router-link to="/foo/a">对象</router-link>
      <router-link to="/bar">工具</router-link>
    </p>
    <router-view></router-view>
  </div>
  <script src="./bundle.js"></script>
</body>

</html>

router.js:


import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);

const Foo = { template: '<div>foo<p>{{$route.params.id}}</p></div>' };
const Bar = { template: '<div>bar</div>' };

const router = new VueRouter({
    routes: [
        { path: "/foo/:id", component: Foo }, { path: "/bar", component: Bar }
    ]
})

export default router;

最终效果图:

多层路由嵌套:

index.html:

<!doctype html>
<html>

<head>
  <title>VUE练习</title>
  <link rel="stylesheet" href="./css/index.css" type="text/css">
</head>

<body>
  <div id="e">
    <h2>嵌套路由</h2>
    <p>
      <router-link to="/foo/a">首页</router-link>
      <router-link to="/foo/b">第二页</router-link>
      <router-link to="/foo/c">第三页</router-link>
      <router-link to="/foo/d">第四页</router-link>
      <router-link to="/foo/e">尾页</router-link>
    </p>
    <router-view></router-view>
  </div>
  <script src="./bundle.js"></script>
</body>

</html>

index.js:

import _ from 'lodash';
import Vue from 'vue';
import router from './router';

new Vue({
  el: "#e",
  data: {
  },
  router,
  methods: {
  },
  components: {},
})

router.js:

import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);

const Foo = { template: '<div>我是公共部分<p>{{$route.params.id}}</p><router-view></router-view></div>' };
const A={template:'<div>我是A部分</div>'};
const B={template:'<div>我是B部分</div>'};
const C={template:'<div>我是C部分</div>'};
const D={template:'<div>我是D部分</div>'};
const E={template:'<div>我是E部分</div>'};

const router = new VueRouter({
    routes: [
        {
            path: "/foo/:id", component: Foo, children: [
                {
                    path: "/foo/a",
                    component: A,
                },
                {
                    path: "/foo/b",
                    component: B,
                },
                {
                    path: "/foo/c",
                    component: C,
                },
                {
                    path: "/foo/d",
                    component: D,
                },
                {
                    path: "/foo/e",
                    component: E,
                },
            ]
        },
    ]
})

export default router;

注:如果path中的路径为空,则默认就是那个页面,一般作为首页显示!

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 17:21:08  更:2021-08-03 17:21:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/22 8:46:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码