如何使用 Vuetify 网格系统循环显示卡片组件?

Posted

技术标签:

【中文标题】如何使用 Vuetify 网格系统循环显示卡片组件?【英文标题】:How to display card components in loop with Vuetify grid system? 【发布时间】:2018-03-31 13:54:42 【问题描述】:

注意:使用 Vue.js 和 Vuetify.js 实现功能和样式

我有使用v-for 动态生成的卡片组件,我想根据屏幕尺寸 (sm/md/lg) 将它们显示在 1/3/4 个卡片中。当我将它们放在 Vuetify 的网格系统中时,带有 v-flexv-layout 元素,卡片被最小化,而不是移动到第二行。

还有其他方法可以解决这个问题吗?

<v-content>
  <v-card class="d-inline-flex" v-for="company of companies" :key="company.name">
    <v-layout >
      <v-flex md6 lg6>
        <img class="company-logo" src="../assets/img/example-logo.png" >
      </v-flex>
      <v-flex md6 lg6>
        <v-card-title class="headline pl-0">company.name</v-card-title>
        <article class="text-md-left text-lg-left">
          <v-btn @click="selectDashboard(href('stats', company.name))" :value="company.name"><v-icon>local_offer</v-icon></v-btn>
          <v-btn @click="selectDashboard(href('process', company.name))" :value="company.name"><v-icon>notifications</v-icon></v-btn>
          <v-btn @click="selectDashboard(href('example', company.name))" :value="company.name"><v-icon>rate_review</v-icon></v-btn>
          <v-btn @click="selectDashboard(href('alerts', company.name))" :value="company.name"><v-icon>explore</v-icon></v-btn>
          <v-btn @click="selectDashboard(href('profile', company.name))" :value="company.name"><v-icon>room</v-icon></v-btn>
        </article>
      </v-flex>
    </v-layout>
  </v-card>
</v-content>

对于视觉效果,此代码笔显示图像宽度尺寸减小(但高度尺寸保持不变)-https://codepen.io/johnjleider/pen/aLXBez?editors=1111

【问题讨论】:

【参考方案1】:

接受的答案对我来说不适用于 v2 的 Vuetify。

现在我们可以使用&lt;v-col&gt;,您可以执行以下操作。

<v-row>
    <v-col cols="12" sm="3" md="4" v-for="(something, index) in somethingsArray" :key="index" >
        <my-component :my-data="something" />
    </v-col>
</v-row>

其中cols="12"xs="12" 相同,并且该列将占用全部12 个空格。

尺寸从最小的屏幕开始放大。然后在小屏幕上,每列将占用 4 个空格,从而产生 3 列,然后对于中型和更大的屏幕,使用 3 个空格,从而产生 4 列。

|__|__|__|__|__|__|__|__|__|__|__|__|  12 spaces in the grid
|-----------------------------------|  <-cols=12 (1 column)
|--------|--------|--------|--------|  <-sm=3 (4 columns)
|-----------|-----------|-----------|  <-md=4 and larger (3 columns)

【讨论】:

【参考方案2】:

&lt;v-flex&gt; 网格的最大值为 12。因此,如果您在 &lt;v-flex xs12&gt; 上设置 xs12(超小断点),它将占用所有网格宽度,直到遇到下一个断点(如果您不这样做) t 设置另一个断点,最低的断点将应用于所有屏幕宽度)。所以然后设置&lt;v-flex xs12 md6&gt;,现在当你命中中间断点时,每张卡片将占用 6 个网格空间,这将允许你并排有 2 张卡片。设置lg3,将允许您在同一个空间中放置4张卡片。

您可以在对示例的此修改中看到它的工作原理 https://codepen.io/twandy/pen/JrxamB?editors=1001

【讨论】:

以上是关于如何使用 Vuetify 网格系统循环显示卡片组件?的主要内容,如果未能解决你的问题,请参考以下文章

在 Vuetify 中制作响应式卡片网格

如何在 react.js 中创建动态网格?

在一页中堆叠 vuetify 元素

Vuetify:在卡片中的图标旁边放置标题/副标题

如何在 Vuetify 中使用断点为不同的屏幕尺寸指定不同的边距

无论vuetify中的文本如何,如何在卡片中底部对齐按钮?