Nuxt的路由动画效果案例


Posted in Javascript onNovember 06, 2020

路由的动画效果,也叫作页面的更换效果。Nuxt.js提动两种方法为路由提动动画效果,一种是全局的,一种是针对单独页面制作。

全局路由动画

全局动画默认使用page进行设置,例如现在我们为每个页面都设置一个进入和退出时的渐隐渐现的效果。我们可以先在根目录的assets/css下建立一个main.css文件。

/assets/css/main.css

.page-enter-active,.page-leave-active{
 transition: opacity 2s;
}
.page-enter,.page-leave-active{
 opacity: 0;
}

然后在nuxt.config.js里加入一个全局的css文件就可以了。

module.exports = {
 /*
 ** Headers of the page
 */
 head: {
 title: 'delnuxt',
 meta: [
  { charset: 'utf-8' },
  { name: 'viewport', content: 'width=device-width, initial-scale=1' },
  { hid: 'description', name: 'description', content: 'Nuxt.js project' }
 ],
 link: [
  { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
 ],
 },
 css:['~assets/css/normailze.css','~assets/css/main.css'],
 /*
 ** Customize the progress bar color
 */
 loading: { color: '#3B8070' },
 /*
 ** Build configuration
 */
 build: {
 /*
 ** Run ESLint on save
 */
 extend (config, { isDev, isClient }) {
  if (isDev && isClient) {
  config.module.rules.push({
   enforce: 'pre',
   test: /\.(js|vue)$/,
   loader: 'eslint-loader',
   exclude: /(node_modules)/
  })
  }
 }
 }
}

这时候在页面切换的时候就会有2秒钟的动画效果了,但是你会发现一些页面时没有效果,这是因为你没有使用<nuxt-link>组件来制作跳转链接。你需要进更改。

比如改成如下:

<nuxt-link :to="{name:'news',params:{newsId:3306}}">NEWS</nuxt-link>

改过之后你就会看到有动画效果了。

单独设置页面动效

想给一个页面单独设置特殊的效果时,我们只要在css里改变默认的page,然后在页面组件的配置中加入transition字段即可。例如,我们想给about页面加入一个字体放大然后缩小的效果,其它页面没有这个效果。

在全局样式assets/main.css中添加以下内容。

.test-enter-active,.test-leave-active{
 transition: all 2s;
 font-size: 12px;
}
.test-enter,.test-leave-active{
 opacity: 0;
 font-size: 40px;
}

然后在about/index.vue组件中设置

<script>
export default {
 transition:'test'
}
</script>

补充知识:vue-ssr框架nuxt填坑

Nuxt.js 1.0.0 初始化与依赖包安装

vue init nuxt/started

npm install

npm run dev

npm run dev 报错

> nuxt-temp@1.0.0 dev E:\MaYunProject\nuxt-temp
> nuxt

E:\MaYunProject\nuxt-temp\node_modules\nuxt\dist\nuxt.js:79
async function promiseFinally(fn, finalFn) {
  ^^^^^^^^

SyntaxError: Unexpected token function
 at createScript (vm.js:56:10)
 at Object.runInThisContext (vm.js:97:10)
 at Module._compile (module.js:542:28)
 at Object.Module._extensions..js (module.js:579:10)
 at Module.load (module.js:487:32)
 at tryModuleLoad (module.js:446:12)
 at Function.Module._load (module.js:438:3)
 at Module.require (module.js:497:17)
 at require (internal/module.js:20:19)
 at Object.<anonymous> (E:\MaYunProject\nuxt-temp\node_modules\nuxt\index.js:17:20)

npm ERR! Windows_NT 10.0.14393
npm ERR! argv "G:\\node\\node.exe" "G:\\node\\node_modules\\npm\\bin\\npm-cli.js" "run" "dev"
npm ERR! node v6.11.4
npm ERR! npm v3.10.10
npm ERR! code ELIFECYCLE
npm ERR! nuxt-temp@1.0.0 dev: `nuxt`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the nuxt-temp@1.0.0 dev script 'nuxt'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the nuxt-temp package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!  nuxt
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!  npm bugs nuxt-temp
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!  npm owner ls nuxt-temp
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!  E:\MaYunProject\nuxt-temp\npm-debug.log

解决错误

将node 升级到 node8.12.0

升级到nuxt-edge Nuxt.js 2.0

1、运行 npm run dev报错

ERROR Failed to compile with 1 errors
  Module build failed (from ./node_modules/eslint-loader/index.js):
  TypeError: Cannot read property 'eslint' of undefined
   at Object.module.exports (.../node_modules/eslint-loader/index.js:148:18)

  You may use special comments to disable some warnings.
  Use // eslint-disable-next-line to ignore the next line.
  Use /* eslint-disable */ to ignore all warnings in a file.

2、修正错误:编辑nuxt.conf.js文件并将其更改为

- module.exports = {
  + export default {
   // ...
   build: {
    /*
    ** Run ESLint on save
    */
   - extend (config, { isDev, isClient }) {
   -  if (isDev && isClient) {
   + extend (config, { isDev }) {
   +  if (isDev && process.client) {
     config.module.rules.push({
     enforce: 'pre',
     test: /\.(js|vue)$/,
     loader: 'eslint-loader',
     exclude: /(node_modules)/
     })
    }
    }
   }
  }

3、 重启服务,打开浏览器并访问:http://localhost:3000/。

以上这篇Nuxt的路由动画效果案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery Ajax之$.get()方法和$.post()方法
Oct 12 Javascript
jQuery示例收集
Nov 05 Javascript
js判断当前浏览器类型,判断IE浏览器方法
Jun 02 Javascript
自己封装的javascript事件队列函数版
Jun 12 Javascript
javascript实现延时显示提示框特效代码
Apr 27 Javascript
JavaScript代码性能优化总结篇
May 15 Javascript
jQuery EasyUI菜单与按钮详解
Jul 13 Javascript
jQuery中的siblings()是什么意思(推荐)
Dec 29 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
Mar 14 Javascript
vue 实现边输入边搜索功能的实例讲解
Sep 16 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
Dec 13 Javascript
JS实现音乐钢琴特效
Jan 06 Javascript
微信小程序中target和currentTarget的区别小结
Nov 06 #Javascript
vue router-link 默认a标签去除下划线的实现
Nov 06 #Javascript
微信小程序调用后台service教程详解
Nov 06 #Javascript
Nuxt.js nuxt-link与router-link的区别说明
Nov 06 #Javascript
在nuxt中使用路由重定向的实例
Nov 06 #Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
Nov 06 #Javascript
Nuxt的路由配置和参数传递方式
Nov 06 #Javascript
You might like
PHP中获取文件扩展名的N种方法小结
2012/02/27 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
JS array 数组详解
2009/03/22 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
Angularjs的$http异步删除数据详解及实例
2017/07/27 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
Python实现从URL地址提取文件名的方法
2015/05/15 Python
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
python文件编写好后如何实践
2020/07/07 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
实习生单位鉴定意见
2013/12/04 职场文书
企业宣传稿范文
2015/07/23 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
nginx 添加http_stub_status_module模块
2022/05/25 Servers