?
<el-tooltip:disabled="isScrolling" <!-- 新增滾動狀態綁定 -->:popper-options="{ modifiers: [{ name: 'computeStyles', options: { adaptive: false }] }"effect="dark":content="label.name"placement="right-start"popper-class="no-transition" <!-- 新增自定義類名 -->
><!-- 原有內容保持不變 -->
</el-tooltip><style>
/* 禁用過渡動畫 */
.no-transition .el-tooltip__popper {transition: none !important;
}
</style>
// 在組件中
import { ref, onMounted, onUnmounted } from 'vue'const isScrolling = ref(false)
let scrollTimer = nullconst handleScroll = () => {isScrolling.value = trueclearTimeout(scrollTimer)scrollTimer = setTimeout(() => {isScrolling.value = false}, 100) // 滾動停止后 100ms 恢復
}onMounted(() => {window.addEventListener('scroll', handleScroll, true)
})onUnmounted(() => {window.removeEventListener('scroll', handleScroll, true)
})
優化 Popper 配置(可選)
<el-tooltip:popper-options="{modifiers: [{name: 'eventListeners',options: {scroll: false // 關閉滾動監聽(需手動控制)}}]}"
>
- 禁用動畫:
- 通過?
transition: none
?消除 CSS 過渡動畫 - 使用?
popper-class
?避免全局樣式污染
- 通過?
- 滾動狀態控制:
- 滾動時通過?
isScrolling
?禁用 Tooltip - 滾動結束后 100ms 恢復(可根據實際效果調整時間)
- 滾動時通過?
- Popper 配置優化:
adaptive: false
?禁用自動位置適應- 關閉內置滾動監聽避免沖突