From 517f0e5f8aad57455fd617ad0675b651b638cded Mon Sep 17 00:00:00 2001 From: liyang <1711467488@qq.com> Date: Fri, 16 Nov 2018 14:54:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Former-commit-id: bd356fb67ff4b7138cb245203c01aaec7374b8b8 [formerly bd356fb67ff4b7138cb245203c01aaec7374b8b8 [formerly bd356fb67ff4b7138cb245203c01aaec7374b8b8 [formerly bd356fb67ff4b7138cb245203c01aaec7374b8b8 [formerly 53a7f073009a8066a7c5673a6c27eb70dcd201e0 [formerly b5943262046e85618f24f20ff5a18c22c9660d57]]]]] Former-commit-id: 14b0b52a698ed902aa8ca6008c7c9cc9f4a922c1 Former-commit-id: 1547cce2ef1de0acc5078b033f499ab8b74ac7f5 Former-commit-id: 64145c3fb940834f88877fa9ab4d44b0c2bf53ad [formerly e985341b7fcb491ee0f9a8e61f878f261fb7a712] Former-commit-id: 5cedd4c754eba078ab88d27280183774c56bd053 Former-commit-id: 72ff1602a26b2ba61f997fe2177f0c885f02a5a8 Former-commit-id: e5a0d1b18b63e498d98dec392459bb05acb7035a Former-commit-id: f024b9a51a480258ae18114b092bf22d8e1708ec Former-commit-id: 33152b0004e8abe0036cf459d47e1155cfc67324 --- src/components/d2-container/index.js | 12 +++++ src/pages/demo/components/container/api.vue | 53 ++++++++++++--------- 2 files changed, 42 insertions(+), 23 deletions(-) diff --git a/src/components/d2-container/index.js b/src/components/d2-container/index.js index dcf493d4..18b5e271 100644 --- a/src/components/d2-container/index.js +++ b/src/components/d2-container/index.js @@ -64,6 +64,18 @@ export default { // 返回顶部 scrollToTop () { this.$refs.component.scrollToTop() + }, + // 用法同原生方法 scrollBy + scrollBy (x = 0, y = 0) { + this.$refs.component.$refs.body.scrollBy(x, y) + }, + // 用法同原生方法 scrollTo + scrollTo (x = 0, y = 0) { + this.$refs.component.$refs.body.scrollTo(x, y) + }, + // 用法同原生方法 scrollTop + scrollTop (top = 0) { + this.$refs.component.$refs.body.scrollTop = top } } } diff --git a/src/pages/demo/components/container/api.vue b/src/pages/demo/components/container/api.vue index 0f373d9d..30fb6f5e 100644 --- a/src/pages/demo/components/container/api.vue +++ b/src/pages/demo/components/container/api.vue @@ -1,19 +1,28 @@ @@ -69,6 +82,7 @@ export default { }, data () { return { + containerType: 'full', scrollDelay: 100, scrollTop: 0 } @@ -80,21 +94,14 @@ export default { } } }, - methods: { - handleScroll (e) { - this.scrollTop = e.target.scrollTop - }, - handleScrollToTop () { - this.$refs.container.scrollToTop() - }, - handleScrollBy () { - this.$refs.container.$children[0].$refs.body.scrollBy(0, 30) - }, - handleScrollTo () { - this.$refs.container.$children[0].$refs.body.scrollTo(0, 100) - }, - handleScrollTop () { - this.$refs.container.$children[0].$refs.body.scrollTop = 100 + watch: { + containerType (val, oldVal) { + let top = this.scrollTop + // 因为 ghost 模式下的容器没有 20px 的 padding + // 为了保持垂直位置 需要重新计算定位高度 + if (oldVal === 'ghost') top += 20 + if (val === 'ghost') top -= 20 + this.$nextTick(() => this.$refs.container.scrollTo(0, top)) } } }