如何使 Vuetify 应用栏可水平滚动

Posted

技术标签:

【中文标题】如何使 Vuetify 应用栏可水平滚动【英文标题】:How to make Vuetify App bar scrollable horizontally 【发布时间】:2020-07-30 21:41:44 【问题描述】:

我正在努力使用 Vuetify 应用栏使其水平滚动。

是否可以以任何方式使其可滚动或可折叠? 我正在使用 Nuxt/Vuetify 构建一个平台。 this is the image of web view

This is the image of mobile view

【问题讨论】:

阅读工具栏文档:vuetifyjs.com/en/components/toolbars/#toolbars。有一个叫做 collapse 的道具可能会对你有所帮助。 【参考方案1】:

改用 v-slide-groups。 https://vuetifyjs.com/en/components/slide-groups/请查笔Link

<v-app id="inspire" flex>
    <v-app-bar
      absolute
      color="cyan accent-3">
      <div class="d-flex flex-row align-center col-12">
        <div class="col-8 col-md-8">
        <v-slide-group show-arrows v-model="model">
        <v-slide-item v-slot:default=" active, toggle "
                    key="a">
        <v-btn icon @click="toggle">
          <v-icon>mdi-account-group</v-icon>
        </v-btn>
      </v-slide-item>
      <v-slide-item v-slot:default=" active, toggle " key="b">
        <v-btn icon @click="toggle">
          <v-icon>mdi-shield</v-icon>
        </v-btn>
      </v-slide-item>
      <v-slide-item v-slot:default=" active, toggle " key="c">
        <v-btn icon @click="toggle">
          <v-icon>mdi-school</v-icon>
        </v-btn>
      </v-slide-item>
      <v-slide-item v-slot:default=" active, toggle " key="d">
        <v-btn icon @click="toggle">
          <v-icon>mdi-book-open</v-icon>
        </v-btn>
      </v-slide-item>
      <v-slide-item v-slot:default=" active, toggle " key="e">
        <v-btn icon @click="toggle">
          <v-icon>mdi-grid</v-icon>
        </v-btn>
      </v-slide-item>
      <v-slide-item v-slot:default=" active, toggle " key="f">
        <v-btn icon @click="toggle">
          <v-icon>mdi-link</v-icon>
        </v-btn>
      </v-slide-item>
    </v-slide-group>
    </div>
      <v-spacer></v-spacer>
      <v-btn icon>
        <v-icon>mdi-face</v-icon>
      </v-btn>
      <v-btn icon>
        <v-icon>mdi-door</v-icon>
      </v-btn>
    </div>
    </v-app-bar>
    <v-content>
      <v-container class="mt-10">
         <v-row>
           <v-col>
              You have clicked on model link
           </v-col>
         </v-row>
      </v-container>
    </v-content>
  </v-app>

【讨论】:

这将类似于我想要的。我们只需要左右隐藏箭头按钮。并使幻灯片组更宽一点【参考方案2】:

Vuetify API 没有选项。任何你可以使用你找到她的想法/概念的方式(与 vue/vuetify 无关的基本 CSS): https://www.w3schools.com/howto/howto_css_menu_horizontal_scroll.asp - 或 - https://iamsteve.me/blog/entry/horizontal-scrolling-responsive-menu

style="overflow-x:auto; white-space: nowrap;"

示例:

new Vue(
  el: '#app',
  vuetify: new Vuetify(),
  
)
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.2.22/dist/vuetify.min.css" rel="stylesheet"/>
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet"/>


<div id="app">
  <v-app id="inspire">
    <div>
      <v-app-bar
                 color="deep-purple accent-4"
                 dense
                 dark
                 >
        <v-app-bar-nav-icon></v-app-bar-nav-icon>
        <v-spacer></v-spacer>
        <div style="overflow-x:auto; white-space: nowrap;">
          <v-btn icon>
            <v-icon>mdi-heart</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-domain</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-message</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-magnify</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-email</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-call-split</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-magnify</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-call-split</v-icon>
          </v-btn>        <v-btn icon>
          <v-icon>mdi-magnify</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-heart</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-domain</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-message</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-magnify</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-domain</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-message</v-icon>
          </v-btn>
          <v-btn icon>
            <v-icon>mdi-magnify</v-icon>
          </v-btn>
        </div>

      </v-app-bar>
    </div>
  </v-app>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.2.22/dist/vuetify.min.js"></script>

如果您想在桌面上禁用此想法,请使用 Media-Q。

【讨论】:

感谢您的回复。我想要它没有滚动条。 w3schools.com/howto/howto_css_hide_scrollbars.asp 如果我们隐藏滚动条我就不能滚动 这就是为什么在桌面上滚动条应该是可见的......对于自定义设计滚动条,请使用 css。对于拖动滚动使用 js。无论如何,这就是你的问题的答案。

以上是关于如何使 Vuetify 应用栏可水平滚动的主要内容,如果未能解决你的问题,请参考以下文章

Vuetify 工具栏和居中块使页面可滚动

使用 Vue.js + Vuetify 有条件地绑定类?

Bootstrap 3 固定顶部导航栏显示水平滚动

为啥我的 vuetify 对话框隐藏在这个邪恶的覆盖层后面?

如何使附加项在 v-select vuetify 中始终可见

如何使 JTable 自动调整大小和水平滚动?