欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何正確初始化高度轉換的DOM元素高度?

李中冰2年前8瀏覽0評論

我使用的是height-transition,它不能從height: auto CSS設置轉換,所以我必須在我的vue組件中使用javascript來提取DOM元素的scrollHeight,并將其用作轉換目標高度。

這個DOM元素有高度轉換:

<div
  class="transition-all duration-300 overflow-hidden"
  :style="{ height: open ? state.height : '0' }"
  ref="tab">
  ...

到目前為止,唯一有效的是setTimeout函數,盡管它不是一個非常簡潔的方法:

setTimeout(() => {
  // workaround to initiate correct tab height for transition to work
  state.height = `${tab.value.scrollHeight}px`
}, 1000)

這是因為正確的高度是在組件掛載和渲染過程中開始的,所以用戶不會注意到選項卡只有在1000毫秒后才能正確渲染。

盡管如此,我還是想知道是否有比這更健壯的方法。我試過了:

onMounted(async () => {
  await nextTick()
  state.height = `${tab.value.scrollHeight}px`
})

或者

watch(
  () => tab.value.scrollHeight,
  async () => {
    await nextTick()
    state.height = `${tab.value.scrollHeight}px`
  }
)

或者

watch(
  () => tab.value,
  async () => {
    await nextTick()
    state.height = `${tab.value.scrollHeight}px`
  },
  { deep: true }
)

沒有一個將正確的初始值設置為state.height。只有超時似乎有所幫助。