You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vuetify中能否在AppBar添加带淡背景、点击展开的搜索文本框?

在Vuetify AppBar中实现淡背景可展开搜索框

当然可以实现这个效果!先帮你梳理下原代码里的问题,再一步步给出可行的解决方案:

1. 先修复基础代码的结构问题

你的原代码存在标签不闭合、栅格组件使用不规范的问题(Vuetify的v-col必须被v-row包裹),先调整成可运行的基础版本:

<template>
  <v-app>
    <v-app-bar :clipped-left="clipped" fixed app class="app-bar-gradient" dark>
      <v-row align="center" class="flex-grow-1">
        <v-col cols="12" sm="6">
          <v-text-field 
            outlined 
            label="搜索" 
            prepend-inner-icon="mdi-magnify"
            background-color="rgba(255,255,255,0.1)" <!-- 设置淡半透明背景 -->
            dense <!-- 让输入框更紧凑,适配AppBar高度 -->
          ></v-text-field>
        </v-col>
      </v-row>
    </v-app-bar>
    <v-main>
      <!-- 这里放页面主体内容 -->
    </v-main>
  </v-app>
</template>

<script>
export default {
  data() {
    return {
      clipped: true
    }
  }
}
</script>

2. 实现点击展开/收起的交互效果

要复刻Material UI里的点击展开效果,我们可以用状态变量控制显示,结合过渡动画让交互更流畅:

<template>
  <v-app>
    <v-app-bar :clipped-left="clipped" fixed app class="app-bar-gradient" dark>
      <!-- 点击切换显示状态的搜索图标 -->
      <v-btn icon @click="showSearch = !showSearch">
        <v-icon>mdi-magnify</v-icon>
      </v-btn>

      <!-- 带过渡动画的可展开搜索框 -->
      <v-transition mode="out-in">
        <v-text-field 
          v-if="showSearch"
          outlined 
          label="搜索" 
          prepend-inner-icon="mdi-magnify"
          background-color="rgba(255,255,255,0.1)"
          dense
          class="ml-2 flex-grow-1"
          @blur="showSearch = false" <!-- 点击外部自动收起 -->
          @keyup.esc="showSearch = false" <!-- 按ESC键收起 -->
        ></v-text-field>
      </v-transition>
    </v-app-bar>
    <v-main>
      <!-- 页面主体内容 -->
    </v-main>
  </v-app>
</template>

<script>
export default {
  data() {
    return {
      clipped: true,
      showSearch: false
    }
  }
}
</script>

<style scoped>
/* 自定义展开/收起的过渡动画 */
.v-enter-active, .v-leave-active {
  transition: all 0.3s ease;
}
.v-enter-from, .v-leave-to {
  width: 0;
  opacity: 0;
  padding: 0;
}
</style>

关键细节说明

  • 淡背景实现:通过background-color设置半透明rgba值,既适配深色AppBar,又能呈现淡背景效果
  • 流畅过渡:借助Vuetify的v-transition组件+自定义CSS,实现搜索框展开/收起的平滑动画
  • 交互优化:支持点击图标切换状态、点击外部自动收起、ESC键收起,贴合用户使用习惯
  • 布局适配:用flex-grow-1让搜索框展开时占满AppBar的可用空间,dense属性让输入框高度适配AppBar

这样调整后,就能实现你想要的类似Material UI的点击展开式淡背景搜索框啦!

内容的提问来源于stack exchange,提问作者user13262487

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:03:15