diff --git a/pages/DigitalIntelligenceDashboard/index.vue b/pages/DigitalIntelligenceDashboard/index.vue index c637718..df328a0 100644 --- a/pages/DigitalIntelligenceDashboard/index.vue +++ b/pages/DigitalIntelligenceDashboard/index.vue @@ -3,7 +3,7 @@ + show-scrollbar="false" :scroll-animation-duration="300"> @@ -379,8 +379,27 @@ export default { this.updateTabScrollPosition(current); }, updateTabScrollPosition(index) { - const avgTabWidth = 100; - this.tabScrollPosition = index * avgTabWidth; + setTimeout(() => { + const query = uni.createSelectorQuery().in(this) + query.select('.tab-container').boundingClientRect() + query.select(`#tab-${index}`).boundingClientRect() + + query.exec((res) => { + if (!res || res.length < 2 || !res[0] || !res[1]) { + const estimatedWidth = 120 + this.tabScrollPosition = Math.max(0, (index - 1) * estimatedWidth) + return + } + + const container = res[0] + const tab = res[1] + const tabCenter = tab.left + (tab.width / 2) + const containerCenter = container.left + (container.width / 2) + const scrollOffset = tabCenter - containerCenter + const newScrollPosition = Math.round(this.tabScrollPosition + scrollOffset) + this.tabScrollPosition = Math.max(0, newScrollPosition) + }) + }, 100) }, // 滚动到指定组件