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 相关文章推荐
js下用层来实现select的title提示属性
Feb 23 Javascript
jquery学习总结(超级详细)
Sep 04 Javascript
js中document.write的那点事
Dec 12 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
May 03 Javascript
Javascript的表单验证长度
Mar 16 Javascript
一款简单的jQuery图片标注效果附源码下载
Mar 22 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
May 30 Javascript
jQuery获取元素父节点的方法
Jun 21 Javascript
AngularJS过滤器filter用法分析
Dec 11 Javascript
在 React、Vue项目中使用SVG的方法
Feb 09 Javascript
Vuex新手的理解与使用详解
May 31 Javascript
Vue实现仿iPhone悬浮球的示例代码
Mar 13 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
2009/06/29 PHP
php入门之连接mysql数据库的一个类
2012/04/21 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
接收键盘指令的脚本
2006/06/26 Javascript
Maps Javascript
2007/01/22 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
js实现网页收藏功能
2015/12/17 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
Python3计算三角形的面积代码
2017/12/18 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
作风建设年活动总结
2014/08/27 职场文书
沙滩主题婚礼活动策划方案
2014/09/15 职场文书
个人职业及收入证明
2014/10/13 职场文书
业务员辞职信范文
2015/03/02 职场文书
档案工作个人总结
2015/03/03 职场文书
2015年项目工作总结
2015/04/29 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript