From 93b718bd123240fe05db084534ca0d0cdb77dc57 Mon Sep 17 00:00:00 2001 From: liyang <1711467488@qq.com> Date: Fri, 16 Nov 2018 10:25:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E9=A1=B6=E9=83=A8=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Former-commit-id: 3c95b5a5df8c09efda44212256f5063a37f9fbc8 [formerly 3c95b5a5df8c09efda44212256f5063a37f9fbc8 [formerly 3c95b5a5df8c09efda44212256f5063a37f9fbc8 [formerly 3c95b5a5df8c09efda44212256f5063a37f9fbc8 [formerly 7765bde19a0f24f058d187abf04a543de1a701e3 [formerly 6da35f0374891df1c2cf2e27562a1890f68b4045]]]]] Former-commit-id: d76ca39daa8f2e97e23eada1bbe5f6ee6deb8459 Former-commit-id: 8a0e5b235398aa2bcd4bc313b194ecda4b3ca70c Former-commit-id: debdb63291e7831e910962793e92a5982eda5262 [formerly ac58f2e8ad837ca633adff21751b90404d948b67] Former-commit-id: 74b92416979407e855119f8f20e54dc635f186e3 Former-commit-id: 4f943668a9e8989426d1de2bed7c27a875ef7752 Former-commit-id: 06ee2b7121ca1bfea625f2e95dc43f19a7b4987f Former-commit-id: 8125182559664ee6704d72ac9073eae009eb2e75 Former-commit-id: 39b9b54e3d6e39fafc85f397b8c50d51113173e0 --- .../components/mixins/scroll.normal.js | 11 +++++++++++ src/components/d2-container/index.js | 7 +++++++ src/pages/demo/components/container/api.vue | 18 +++++++++++------- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/components/d2-container/components/mixins/scroll.normal.js b/src/components/d2-container/components/mixins/scroll.normal.js index f057628b..8b118f44 100644 --- a/src/components/d2-container/components/mixins/scroll.normal.js +++ b/src/components/d2-container/components/mixins/scroll.normal.js @@ -45,6 +45,17 @@ export default { // 移除滚动事件监听 removeScrollListener () { this.$refs.body.removeEventListener('scroll', this.handleScroll) + }, + // 外部调用的方法 返回顶部 + scrollToTop () { + const smoothscroll = () => { + var currentScroll = this.$refs.body.scrollTop + if (currentScroll > 0) { + window.requestAnimationFrame(smoothscroll) + this.$refs.body.scrollTo(0, currentScroll - (currentScroll / 5)) + } + } + smoothscroll() } } } diff --git a/src/components/d2-container/index.js b/src/components/d2-container/index.js index cfc14871..dcf493d4 100644 --- a/src/components/d2-container/index.js +++ b/src/components/d2-container/index.js @@ -48,6 +48,7 @@ export default { class: 'container-component' }, [ h(this.component, { + ref: 'component', props: this.$attrs, on: { scroll: e => this.$emit('scroll', e) @@ -58,5 +59,11 @@ export default { props: this.$attrs }) : undefined ]) + }, + methods: { + // 返回顶部 + scrollToTop () { + this.$refs.component.scrollToTop() + } } } diff --git a/src/pages/demo/components/container/api.vue b/src/pages/demo/components/container/api.vue index 5e59ec01..bd4a4d86 100644 --- a/src/pages/demo/components/container/api.vue +++ b/src/pages/demo/components/container/api.vue @@ -8,16 +8,16 @@ :inline="true" size="mini"> + style="width: 120px;"> + @click="handleScrollToTop"> 回到顶部 @@ -38,8 +38,10 @@ + v-for="i in 10" + :key="i" + :style="articleStyle" + long/>