如何在 vue 转换中添加动态值作为最大高度?

How can I add a dynamic value as the max height in a vue transition?

在下面的代码示例中,我使用了 vue 转换标签 我想转换最大高度。 我不想对这些值进行硬编码,而是希望在 JS 中获取滚动高度值。

例子。 获取这两个item的滚动高度,max-height取最大值,min-height取最小值

正在 SCSS 中定义转换,然后在标记中引用 有没有办法在 Vue 转换中使用这些动态值?

将这个最小宽度设为 0 会使它收缩得太多,而作为硬编码值的最大宽度有点脆弱

Vue

<transition name="component-fade" mode="out-in">
    <div key="search" v-if="searchSite">
         <SiteSearchBox />
     </div>

    <div key="works" v-else>
        <WorksSearchBox" />
    </div>
</transition>

SCSS

.component-fade-enter-active {
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1) 0s;
        max-height: 500px;

}

.component-fade-leave-active {
    transition: height 0.4s cubic-bezier(0.4, 0, 0.2, 1) 0s;
    max-height: 500px;

}

.component-fade-enter, .component-fade-leave-to {
    max-height: 0;
}

一个粗略的算法是

  1. 您需要在组件的数据对象中声明变量,如下所示

    data: { maxHeight:0, minHeight:0, divOneHeight:0, divTwoHeight:0 }

  2. 您需要将 ref 属性添加到相应的 div 元素,如下所示。 例如

    <div key="search" ref="div1"/><div key="works" ref="div2"/>

  3. 在methods对象下定义一个方法如下

methods: {
 yourMethodToFindDivHeights: function(el)
   {
      //Determine the heights
     divOneHeight =  this.$refs.div1.$el.clientHeight;
     divTwoHeight =  this.$refs.div2.$el.clientHeight;
     maxHeight = //your calculation goes here
     minHeight = //your calculation goes here
   }
  1. 在组件生命周期的mounted方法中调用上述方法

  2. 最后除了参考scss class,重新设置最大高度如下。例如

< transition name="component-fade" mode="out-in" class="yourclass" max-height="maxHeight" />

只需尝试执行上述步骤