【问题标题】:Vuetify: custom footer for Autocomplete componentVuetify:自动完成组件的自定义页脚
【发布时间】:2020-06-07 06:18:40
【问题描述】:

我需要使用 Vuetify 将一些底部固定元素添加到 v-autocomplete 组件的列表中,如下所示:

我尝试使用 append-item 插槽并应用 position: sticky ,以便在用户滚动自动完成列表时它会粘在底部。但是,这不适用于 IE11(我需要):

https://caniuse.com/#feat=css-sticky

我无法为此项目添加任何 polyfill,因此我尝试寻找另一种替代方法。到目前为止,我已经使用 v-menu 组件将自动完成和菜单附加到同一个 div:

<div class="text-center">
    <v-menu content-class="menu" :attach="'.text-center'">
        <template v-slot:activator="{ on }">
            <v-autocomplete
                :attach="'.text-center'"
                class="autocomplete"
                :items="['something', 'something2']"
                color="primary"
                v-on="on"
                dark
            >
                Dropdown
            </v-autocomplete>
        </template>
        <div class="lower">
            Lower content
        </div>
    </v-menu>
</div>

https://codepen.io/codepenas/pen/YzXpMYY

当您第一次关注自动完成组件时,它似乎工作正常。但是,再次单击它后,包含较低内容的菜单将被停用。此外,当点击自动完成最右边的部分时,只会显示包含自动完成项目的列表。

当自动完成列表这样做时,我需要切换较低的内容,或者添加此固定底部的任何其他替代方法。

【问题讨论】:

  • 你想对较低的内容做什么?当用户单击它时,您希望附加什么?您希望如何修复该项目?因为它是列表的最后一项,还是您希望它在用户滚动时始终显示?
  • @djcaesar9114 当用户点击它时,他将被重定向到另一个站点。我希望较低的内容不是列表的最后一项。 Intsead,我需要将它附加到列表之外,以便用户可以滚动所述列表并始终显示较低的内容。
  • 只有在显示列表本身时才应该显示较低的内容
  • 你希望它像其他的一样可以选择吗?
  • @djcaesar9114 不,我不希望它是可选的。我需要能够在那里放置任何类型的内容。下层内容和列表的唯一关系就是它们需要一起显示和隐藏。谢谢

标签: css vue.js css-position vuetify.js sticky


【解决方案1】:

你可以使用物品栏,虽然看起来很丑但确实有效,即使在 IE11 上也是如此:

<v-autocomplete 
  :items="[{ value: 'something' }, { value: 'something2' }, 'Lower content']"
>
  <template v-slot:item="data">
    <template v-if="typeof data.item === 'object'">
      <v-list-item-content v-text="data.item.value"></v-list-item-content>
    </template>
    <template v-else>
      <v-list-item-content v-text="data.item" class="red"></v-list-item-content>
    </template>
  </template>
</v-autocomplete>

【讨论】:

  • 感谢您的回答。我在我的问题中提到我已经尝试过,其中包括菜单列表 inside 的元素。但是,我需要将它附加到 外部
  • 对不起,我的错,我改变了答案,我保证它适用于 IE11。关于 inside 或 outside 的问题,也许你可以通过 CSS 让它看起来像 outside。
  • 我知道它适用于 IE11。不起作用的是粘性 css 属性
  • 主要问题是让它在外面
【解决方案2】:

有一个解决办法:

<div id="app">
  <v-app id="inspire">
    <div class="text-center">
      <v-menu content-class="menu" :attach="'.text-center'">
          <template v-slot:activator="{ on }">
            <v-autocomplete
              :attach="'.text-center'"
              class="autocomplete"
              :items="['something', 'something2']"
              color="primary"
              v-on="on"
              dark
            >
              <v-list-item
                slot="append-item"
                class="grey--text">
                {{ items.length }} elements
              </v-list-item>
            </v-autocomplete>
          </template>
      </v-menu>
    </div>
  </v-app>
</div>

【讨论】:

  • 不适合我。当项目数量增加时,较低的内容不可见。较低的内容只是作为列表的最后一项插入,而不是在列表之外
猜你喜欢
  • 2019-08-19
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2019-01-06
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
相关资源
最近更新 更多