如何使用 Vuetify 网格系统循环显示卡片组件?
How to display card components in loop with Vuetify grid system?
注意: 使用 Vue.js 和 Vuetify.js 实现功能和样式
我有使用 v-for
动态生成的卡片组件,我想根据屏幕尺寸 (sm/md/lg) 在 1/3/4 卡片中连续显示它们。当我将它们放在 Vuetify 的网格系统中时,带有 v-flex
和 v-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" alt="company logo">
</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
<v-flex>
网格最大为 12。因此,如果您在 <v-flex xs12>
上设置 xs12
(超小断点),它将占用所有网格宽度,直到它命中下一个断点(如果您不设置另一个断点,则最低的断点将应用于所有屏幕宽度)。所以然后设置<v-flex xs12 md6>
,现在当你打到中断点时,每张卡将占用6格spaces,这将允许你并排放置2张卡。设置 lg3
,将允许您在同一个 space 中放置 4 张卡片。
你可以看到它在你的例子的这个修改中工作
https://codepen.io/twandy/pen/JrxamB?editors=1001
已接受的答案对 Vuetify v2 无效。
现在我们可以使用 <v-col>
,您可以执行如下操作。
<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)
注意: 使用 Vue.js 和 Vuetify.js 实现功能和样式
我有使用 v-for
动态生成的卡片组件,我想根据屏幕尺寸 (sm/md/lg) 在 1/3/4 卡片中连续显示它们。当我将它们放在 Vuetify 的网格系统中时,带有 v-flex
和 v-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" alt="company logo">
</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
<v-flex>
网格最大为 12。因此,如果您在 <v-flex xs12>
上设置 xs12
(超小断点),它将占用所有网格宽度,直到它命中下一个断点(如果您不设置另一个断点,则最低的断点将应用于所有屏幕宽度)。所以然后设置<v-flex xs12 md6>
,现在当你打到中断点时,每张卡将占用6格spaces,这将允许你并排放置2张卡。设置 lg3
,将允许您在同一个 space 中放置 4 张卡片。
你可以看到它在你的例子的这个修改中工作 https://codepen.io/twandy/pen/JrxamB?editors=1001
已接受的答案对 Vuetify v2 无效。
现在我们可以使用 <v-col>
,您可以执行如下操作。
<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)