diff --git a/examples/custom-scroll-behavior/assets/main.css b/examples/custom-scroll-behavior/assets/main.css
index 1a0d0af818..6045371f79 100644
--- a/examples/custom-scroll-behavior/assets/main.css
+++ b/examples/custom-scroll-behavior/assets/main.css
@@ -3,12 +3,30 @@ body {
}
.container {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
text-align: center;
- /* padding-top: 200px; */
font-size: 20px;
transition: all .5s cubic-bezier(.55,0,.1,1);
}
+.child {
+ position: absolute;
+ top: 200px;
+ left: 0;
+ width: 100%;
+ text-align: center;
+ font-size: 16px;
+ transition: all .5s cubic-bezier(.55,0,.1,1);
+}
+
+ul {
+ list-style: none;
+ padding: 0;
+}
+
.page-enter-active, .page-leave-active {
transition: opacity .5s
}
diff --git a/examples/custom-scroll-behavior/nuxt.config.js b/examples/custom-scroll-behavior/nuxt.config.js
index 460ddc5775..8bb892dad3 100644
--- a/examples/custom-scroll-behavior/nuxt.config.js
+++ b/examples/custom-scroll-behavior/nuxt.config.js
@@ -1,51 +1,35 @@
-const scrollBehavior = function (to, from, savedPosition, ...args) {
- if (savedPosition) {
- // savedPosition is only available for popstate navigations.
- return savedPosition
- } else {
- const position = {}
+const scrollBehavior = function (to, from, savedPosition) {
+ // if the returned position is falsy or an empty object,
+ // will retain current scroll position.
+ let position = false
- // scroll to anchor by returning the selector
- if (to.hash) {
- position.selector = to.hash
-
- if (document.querySelector(to.hash)) {
- return position
- }
-
- // if the returned position is falsy or an empty object,
- // will retain current scroll position.
- return false
- }
-
- return new Promise(resolve => {
- // check if any matched route config has meta that requires scrolling to top
- if (to.matched.some(m => m.meta.scrollToTop)) {
- // coords will be used if no selector is provided,
- // or if the selector didn't match any element.
- position.x = 0
- position.y = 0
- }
-
- // if no children detected
- if (to.matched.length < 2) {
- // scroll to the top of the page
- position.x = 0
- position.y = 0
- } else if (to.matched.some((r) => r.components.default.options.scrollToTop)) {
- // if one of the children has scrollToTop option set to true
- position.x = 0
- position.y = 0
- }
-
- // wait for the out transition to complete (if necessary)
- this.app.$root.$once('triggerScroll', () => {
- // if the resolved position is falsy or an empty object,
- // will retain current scroll position.
- resolve(position)
- })
- })
+ // if no children detected
+ if (to.matched.length < 2) {
+ // scroll to the top of the page
+ position = { x: 0, y: 0 }
+ } else if (to.matched.some((r) => r.components.default.options.scrollToTop)) {
+ // if one of the children has scrollToTop option set to true
+ position = { x: 0, y: 0 }
}
+
+ // savedPosition is only available for popstate navigations (back button)
+ if (savedPosition) {
+ position = savedPosition
+ }
+
+ return new Promise(resolve => {
+ // wait for the out transition to complete (if necessary)
+ this.app.$root.$once('triggerScroll', () => {
+ // coords will be used if no selector is provided,
+ // or if the selector didn't match any element.
+ if (to.hash && document.querySelector(to.hash)) {
+ // scroll to anchor by returning the selector
+ position = { selector: to.hash }
+ }
+
+ resolve(position)
+ })
+ })
}
module.exports = {
@@ -54,7 +38,7 @@ module.exports = {
},
css: ['~/assets/main.css'],
transition: {
- afterLeave() {
+ beforeEnter() {
this.$root.$emit('triggerScroll')
}
},
diff --git a/examples/custom-scroll-behavior/package.json b/examples/custom-scroll-behavior/package.json
index c61dd88174..2a869bb622 100644
--- a/examples/custom-scroll-behavior/package.json
+++ b/examples/custom-scroll-behavior/package.json
@@ -2,7 +2,8 @@
"name": "nuxt-routes-transitions",
"dependencies": {
"axios": "^0.15.3",
- "nuxt": "latest"
+ "nuxt": "latest",
+ "vue-router": "https://github.com/homerjam/vue-router#dist"
},
"scripts": {
"dev": "nuxt",
diff --git a/examples/custom-scroll-behavior/pages/about.vue b/examples/custom-scroll-behavior/pages/about.vue
index bfeea07ec2..1104c0d814 100644
--- a/examples/custom-scroll-behavior/pages/about.vue
+++ b/examples/custom-scroll-behavior/pages/about.vue
@@ -1,12 +1,21 @@
About page
+
+
+ Contact
+
+ Profile
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam neque turpis, tempor vitae accumsan eget, bibendum eget dui. Vestibulum fringilla mi ac nunc malesuada accumsan. Proin mattis, ex vitae rhoncus dapibus, tellus tortor tincidunt metus, sed scelerisque dolor nunc rhoncus enim. Pellentesque semper interdum quam in placerat. Sed ut finibus mi. Aliquam placerat tellus ac tincidunt sodales. Quisque pharetra neque a risus placerat, sed suscipit felis mattis. Maecenas pretium efficitur fringilla. Sed commodo leo congue velit pretium, in consequat ex egestas. Pellentesque gravida vitae elit varius condimentum. Fusce in magna tellus. Proin in odio ac est elementum pharetra.
+Vivamus dapibus libero sem, eu sagittis lorem hendrerit id. Suspendisse faucibus sapien quis cursus lobortis. Phasellus blandit tellus at arcu ornare fermentum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi ac massa sollicitudin, lacinia lacus porta, cursus mi. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nunc aliquam quis elit ut maximus. Integer blandit ipsum sed elit laoreet consequat. Pellentesque quis volutpat tellus, vitae finibus nulla. Etiam a porta orci. Morbi at libero sit amet tortor eleifend congue. Integer egestas fermentum lacinia. Curabitur dignissim, enim eget consectetur tempor, lacus felis auctor ante, in egestas arcu turpis ut tellus. Phasellus mattis dictum leo, a gravida purus tristique sed. Pellentesque sollicitudin arcu eu augue vehicula, molestie hendrerit sapien mollis.
+Nunc ullamcorper magna nunc, vitae vestibulum est laoreet vel. Aliquam erat volutpat. Duis vehicula ligula at justo egestas posuere. Mauris pharetra nulla ac pretium eleifend. Mauris purus eros, venenatis sollicitudin ornare id, mattis in lorem. Curabitur tortor magna, viverra eget lorem ultricies, aliquam aliquam libero. Maecenas vestibulum id libero sed fermentum. Praesent consequat dui sed pellentesque commodo. Curabitur finibus purus vel purus mattis luctus. Nullam maximus dapibus orci, ac mattis diam egestas vel. Praesent lorem dolor, congue quis gravida commodo, rhoncus nec justo. In et elementum augue. Donec fringilla imperdiet magna, quis luctus leo placerat sed. Morbi scelerisque in sem eu dapibus. Sed interdum, felis luctus semper viverra, ex lorem posuere velit, in bibendum nunc dolor et diam.
+Duis pulvinar lorem vel tempus pellentesque. Vivamus imperdiet imperdiet augue, ac rhoncus velit vulputate eu. Sed sed nulla risus. Curabitur ut velit consectetur, semper velit quis, elementum tellus. Ut eget ligula eget leo porta vestibulum. Curabitur ligula magna, rutrum ut enim vitae, gravida sollicitudin augue. Aliquam auctor gravida mauris, nec feugiat ipsum mollis vel. Vivamus nec aliquet ipsum, id scelerisque nibh. Vestibulum iaculis eleifend nunc, vitae efficitur massa egestas et. Ut pulvinar, purus eget viverra sodales, est mauris luctus metus, non luctus tellus diam in elit.
+Quisque sollicitudin non urna non consectetur. Cras quis dapibus nisi. Maecenas maximus rhoncus neque, a lacinia urna egestas nec. Morbi molestie odio sit amet tempus cursus. Vivamus lorem nunc, malesuada et maximus id, imperdiet eget felis. Ut elementum fringilla velit in mattis. Morbi ut laoreet mi. Aliquam et odio dignissim, fermentum purus sit amet, facilisis lorem. Donec semper mi ut semper tristique. Sed in dolor placerat, porta elit in, tempor felis. Integer metus erat, tristique efficitur quam quis, finibus blandit magna. Nunc sit amet lorem dui. Suspendisse ut vulputate nisi. Integer sit amet sollicitudin libero.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam neque turpis, tempor vitae accumsan eget, bibendum eget dui. Vestibulum fringilla mi ac nunc malesuada accumsan. Proin mattis, ex vitae rhoncus dapibus, tellus tortor tincidunt metus, sed scelerisque dolor nunc rhoncus enim. Pellentesque semper interdum quam in placerat. Sed ut finibus mi. Aliquam placerat tellus ac tincidunt sodales. Quisque pharetra neque a risus placerat, sed suscipit felis mattis. Maecenas pretium efficitur fringilla. Sed commodo leo congue velit pretium, in consequat ex egestas. Pellentesque gravida vitae elit varius condimentum. Fusce in magna tellus. Proin in odio ac est elementum pharetra.
+Vivamus dapibus libero sem, eu sagittis lorem hendrerit id. Suspendisse faucibus sapien quis cursus lobortis. Phasellus blandit tellus at arcu ornare fermentum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi ac massa sollicitudin, lacinia lacus porta, cursus mi. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nunc aliquam quis elit ut maximus. Integer blandit ipsum sed elit laoreet consequat. Pellentesque quis volutpat tellus, vitae finibus nulla. Etiam a porta orci. Morbi at libero sit amet tortor eleifend congue. Integer egestas fermentum lacinia. Curabitur dignissim, enim eget consectetur tempor, lacus felis auctor ante, in egestas arcu turpis ut tellus. Phasellus mattis dictum leo, a gravida purus tristique sed. Pellentesque sollicitudin arcu eu augue vehicula, molestie hendrerit sapien mollis.
+Nunc ullamcorper magna nunc, vitae vestibulum est laoreet vel. Aliquam erat volutpat. Duis vehicula ligula at justo egestas posuere. Mauris pharetra nulla ac pretium eleifend. Mauris purus eros, venenatis sollicitudin ornare id, mattis in lorem. Curabitur tortor magna, viverra eget lorem ultricies, aliquam aliquam libero. Maecenas vestibulum id libero sed fermentum. Praesent consequat dui sed pellentesque commodo. Curabitur finibus purus vel purus mattis luctus. Nullam maximus dapibus orci, ac mattis diam egestas vel. Praesent lorem dolor, congue quis gravida commodo, rhoncus nec justo. In et elementum augue. Donec fringilla imperdiet magna, quis luctus leo placerat sed. Morbi scelerisque in sem eu dapibus. Sed interdum, felis luctus semper viverra, ex lorem posuere velit, in bibendum nunc dolor et diam.
+Duis pulvinar lorem vel tempus pellentesque. Vivamus imperdiet imperdiet augue, ac rhoncus velit vulputate eu. Sed sed nulla risus. Curabitur ut velit consectetur, semper velit quis, elementum tellus. Ut eget ligula eget leo porta vestibulum. Curabitur ligula magna, rutrum ut enim vitae, gravida sollicitudin augue. Aliquam auctor gravida mauris, nec feugiat ipsum mollis vel. Vivamus nec aliquet ipsum, id scelerisque nibh. Vestibulum iaculis eleifend nunc, vitae efficitur massa egestas et. Ut pulvinar, purus eget viverra sodales, est mauris luctus metus, non luctus tellus diam in elit.
+Quisque sollicitudin non urna non consectetur. Cras quis dapibus nisi. Maecenas maximus rhoncus neque, a lacinia urna egestas nec. Morbi molestie odio sit amet tempus cursus. Vivamus lorem nunc, malesuada et maximus id, imperdiet eget felis. Ut elementum fringilla velit in mattis. Morbi ut laoreet mi. Aliquam et odio dignissim, fermentum purus sit amet, facilisis lorem. Donec semper mi ut semper tristique. Sed in dolor placerat, porta elit in, tempor felis. Integer metus erat, tristique efficitur quam quis, finibus blandit magna. Nunc sit amet lorem dui. Suspendisse ut vulputate nisi. Integer sit amet sollicitudin libero.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam neque turpis, tempor vitae accumsan eget, bibendum eget dui. Vestibulum fringilla mi ac nunc malesuada accumsan. Proin mattis, ex vitae rhoncus dapibus, tellus tortor tincidunt metus, sed scelerisque dolor nunc rhoncus enim. Pellentesque semper interdum quam in placerat. Sed ut finibus mi. Aliquam placerat tellus ac tincidunt sodales. Quisque pharetra neque a risus placerat, sed suscipit felis mattis. Maecenas pretium efficitur fringilla. Sed commodo leo congue velit pretium, in consequat ex egestas. Pellentesque gravida vitae elit varius condimentum. Fusce in magna tellus. Proin in odio ac est elementum pharetra.
Vivamus dapibus libero sem, eu sagittis lorem hendrerit id. Suspendisse faucibus sapien quis cursus lobortis. Phasellus blandit tellus at arcu ornare fermentum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi ac massa sollicitudin, lacinia lacus porta, cursus mi. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nunc aliquam quis elit ut maximus. Integer blandit ipsum sed elit laoreet consequat. Pellentesque quis volutpat tellus, vitae finibus nulla. Etiam a porta orci. Morbi at libero sit amet tortor eleifend congue. Integer egestas fermentum lacinia. Curabitur dignissim, enim eget consectetur tempor, lacus felis auctor ante, in egestas arcu turpis ut tellus. Phasellus mattis dictum leo, a gravida purus tristique sed. Pellentesque sollicitudin arcu eu augue vehicula, molestie hendrerit sapien mollis.
Nunc ullamcorper magna nunc, vitae vestibulum est laoreet vel. Aliquam erat volutpat. Duis vehicula ligula at justo egestas posuere. Mauris pharetra nulla ac pretium eleifend. Mauris purus eros, venenatis sollicitudin ornare id, mattis in lorem. Curabitur tortor magna, viverra eget lorem ultricies, aliquam aliquam libero. Maecenas vestibulum id libero sed fermentum. Praesent consequat dui sed pellentesque commodo. Curabitur finibus purus vel purus mattis luctus. Nullam maximus dapibus orci, ac mattis diam egestas vel. Praesent lorem dolor, congue quis gravida commodo, rhoncus nec justo. In et elementum augue. Donec fringilla imperdiet magna, quis luctus leo placerat sed. Morbi scelerisque in sem eu dapibus. Sed interdum, felis luctus semper viverra, ex lorem posuere velit, in bibendum nunc dolor et diam.