From 80410b4487e6800a4d1283765009eabe5dcf42ec Mon Sep 17 00:00:00 2001 From: hetech Date: Sun, 30 Sep 2018 15:21:34 +0800 Subject: [PATCH] Tabs: scroll to active tab (#12948) * Tabs: fix not scrolling to active tab * update tabs.vue --- packages/tabs/src/tab-nav.vue | 9 ++++----- packages/tabs/src/tabs.vue | 6 ++++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/tabs/src/tab-nav.vue b/packages/tabs/src/tab-nav.vue index b39b5c8e2..1d4f8f272 100644 --- a/packages/tabs/src/tab-nav.vue +++ b/packages/tabs/src/tab-nav.vue @@ -87,7 +87,7 @@ const navScroll = this.$refs.navScroll; const activeTabBounding = activeTab.getBoundingClientRect(); const navScrollBounding = navScroll.getBoundingClientRect(); - const navBounding = nav.getBoundingClientRect(); + const maxOffset = nav.offsetWidth - navScrollBounding.width; const currentOffset = this.navOffset; let newOffset = currentOffset; @@ -97,10 +97,9 @@ if (activeTabBounding.right > navScrollBounding.right) { newOffset = currentOffset + activeTabBounding.right - navScrollBounding.right; } - if (navBounding.right < navScrollBounding.right) { - newOffset = nav.offsetWidth - navScrollBounding.width; - } - this.navOffset = Math.max(newOffset, 0); + + newOffset = Math.max(newOffset, 0); + this.navOffset = Math.min(newOffset, maxOffset); }, update() { if (!this.$refs.nav) return; diff --git a/packages/tabs/src/tabs.vue b/packages/tabs/src/tabs.vue index 34982ecc2..3447f9f53 100644 --- a/packages/tabs/src/tabs.vue +++ b/packages/tabs/src/tabs.vue @@ -45,8 +45,10 @@ }, currentName(value) { if (this.$refs.nav) { - this.$nextTick(_ => { - this.$refs.nav.scrollToActiveTab(); + this.$nextTick(() => { + this.$refs.nav.$nextTick(_ => { + this.$refs.nav.scrollToActiveTab(); + }); }); } }