程序滚动

您可以使用 $vuetify 对象上的 goTo 方法以编程方式触发应用程序中的滚动。 此方法支持几种不同类型的目标选择器和选项,包括使用内置缓动功能的平滑滚动。

用例

goTo 方法需要两个参数 targetoptionstarget 可以是相对于页面顶部偏移,也可以是一个有效的 css 选择器,也可以是元素引用。 options 是一个包含 duration, easing ,container, 和 offset 在内的对象。

template script


  1. <template>
  2. <v-container>
  3. <v-row>
  4. <v-col cols="12">
  5. <h3
  6. ref="radio"
  7. class="headline"
  8. >
  9. Target
  10. </h3>
  11. <v-radio-group
  12. v-model="type"
  13. row
  14. >
  15. <v-radio
  16. label="Number"
  17. value="number"
  18. ></v-radio>
  19. <v-radio
  20. label="Selector"
  21. value="selector"
  22. ></v-radio>
  23. <v-radio
  24. label="DOMElement"
  25. value="element"
  26. ></v-radio>
  27. </v-radio-group>
  28. <v-text-field
  29. v-if="type === 'number'"
  30. v-model="number"
  31. type="number"
  32. label="Number"
  33. ></v-text-field>
  34. <v-select
  35. v-if="type === 'selector'"
  36. v-model="selector"
  37. label="Selector"
  38. :items="selections"
  39. ></v-select>
  40. <v-select
  41. v-if="type === 'element'"
  42. v-model="selected"
  43. :items="elements"
  44. label="DOMElement"
  45. ></v-select>
  46. </v-col>
  47. <v-col cols="12">
  48. <h3 class="headline">Options</h3>
  49. <v-select
  50. v-model="easing"
  51. :items="easings"
  52. label="Easing"
  53. ></v-select>
  54. <v-slider
  55. v-model="duration"
  56. min="0"
  57. max="1000"
  58. label="Duration"
  59. thumb-label
  60. ></v-slider>
  61. <v-slider
  62. v-model="offset"
  63. min="-500"
  64. max="500"
  65. label="Offset"
  66. thumb-label
  67. ></v-slider>
  68. </v-col>
  69. <v-col>
  70. <v-btn
  71. ref="button"
  72. block
  73. color="primary"
  74. @click="$vuetify.goTo(target, options)"
  75. >
  76. scroll
  77. </v-btn>
  78. </v-col>
  79. </v-row>
  80. </v-container>
  81. </template>
  1. <script>
  2. import * as easings from 'vuetify/es5/services/goto/easing-patterns'
  3. export default {
  4. data () {
  5. return {
  6. type: 'number',
  7. number: 9999,
  8. selector: '#first',
  9. selections: ['#first', '#second', '#third'],
  10. selected: 'Button',
  11. elements: ['Button', 'Radio group'],
  12. duration: 300,
  13. offset: 0,
  14. easing: 'easeInOutCubic',
  15. easings: Object.keys(easings),
  16. }
  17. },
  18. computed: {
  19. target () {
  20. const value = this[this.type]
  21. if (!isNaN(value)) return Number(value)
  22. else return value
  23. },
  24. options () {
  25. return {
  26. duration: this.duration,
  27. offset: this.offset,
  28. easing: this.easing,
  29. }
  30. },
  31. element () {
  32. if (this.selected === 'Button') return this.$refs.button
  33. else if (this.selected === 'Radio group') return this.$refs.radio
  34. },
  35. },
  36. }
  37. </script>

Programmatic scrolling(程序滚动) - 图1

API

从下面选择您想要的组件,并查看可用的属性、插槽、事件和函数。

Programmatic scrolling(程序滚动) - 图2

和路由一起使用

goTo 函数可以单独导入并在任何地方被调用。当绑定到 vue-router 时,这尤其有用。

  1. // src/router.js
  2. import Router from 'vue-router'
  3. import goTo from 'vuetify/es5/services/goto'
  4. export default new Router({
  5. scrollBehavior: (to, from, savedPosition) => {
  6. let scrollTo = 0
  7. if (to.hash) {
  8. scrollTo = to.hash
  9. } else if (savedPosition) {
  10. scrollTo = savedPosition.y
  11. }
  12. return goTo(scrollTo)
  13. },
  14. routes: [
  15. //
  16. ],
  17. })

First

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

Second

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

Third

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?