您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)利用Nuxt實(shí)現(xiàn)一個(gè)路由動(dòng)畫效果,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識(shí)有一定的了解。
路由的動(dòng)畫效果,也叫作頁面的更換效果。Nuxt.js提動(dòng)兩種方法為路由提動(dòng)動(dòng)畫效果,一種是全局的,一種是針對單獨(dú)頁面制作。
全局路由動(dòng)畫
全局動(dòng)畫默認(rèn)使用page進(jìn)行設(shè)置,例如現(xiàn)在我們?yōu)槊總€(gè)頁面都設(shè)置一個(gè)進(jìn)入和退出時(shí)的漸隱漸現(xiàn)的效果。我們可以先在根目錄的assets/css下建立一個(gè)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里加入一個(gè)全局的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)/ }) } } } }
這時(shí)候在頁面切換的時(shí)候就會(huì)有2秒鐘的動(dòng)畫效果了,但是你會(huì)發(fā)現(xiàn)一些頁面時(shí)沒有效果,這是因?yàn)槟銢]有使用<nuxt-link>組件來制作跳轉(zhuǎn)鏈接。你需要進(jìn)更改。
比如改成如下:
<nuxt-link :to="{name:'news',params:{newsId:3306}}">NEWS</nuxt-link>
改過之后你就會(huì)看到有動(dòng)畫效果了。
單獨(dú)設(shè)置頁面動(dòng)效
想給一個(gè)頁面單獨(dú)設(shè)置特殊的效果時(shí),我們只要在css里改變默認(rèn)的page,然后在頁面組件的配置中加入transition字段即可。例如,我們想給about頁面加入一個(gè)字體放大然后縮小的效果,其它頁面沒有這個(gè)效果。
在全局樣式assets/main.css中添加以下內(nèi)容。
.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組件中設(shè)置
<script> export default { transition:'test' } </script>
補(bǔ)充知識(shí):vue-ssr框架nuxt填坑
Nuxt.js 1.0.0 初始化與依賴包安裝
vue init nuxt/started
npm install
npm run dev
npm run dev 報(bào)錯(cuò)
> 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
解決錯(cuò)誤
將node 升級到 node8.12.0
升級到nuxt-edge Nuxt.js 2.0
1、運(yùn)行 npm run dev報(bào)錯(cuò)
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、修正錯(cuò)誤:編輯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、 重啟服務(wù),打開瀏覽器并訪問:http://localhost:3000/。
關(guān)于利用Nuxt實(shí)現(xiàn)一個(gè)路由動(dòng)畫效果就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。