从项目列表中验证自适应网格布局
Vuetify adaptative grid layout from item list
我有一个似乎很常见的问题,但我可以克服它。
我有一个 API 查询 returns 我有一个对象列表。
我想在我的页面上将其显示为充满内容的卡片网格。
我希望我的网格在 5 列中,行数将适应我列表中的元素数。
我知道怎么实现了。
例如:我有一个查询返回
items[
{"id":1,"title":"title1,"description":"description1"}
{"id":2,"title":"title2,"description":"description2"}
{"id":3,"title":"title3,"description":"description3"}
{"id":4,"title":"title4,"description":"description4"}
{"id":5,"title":"title5,"description":"description5"}
{"id":6,"title":"title6,"description":"description6"}
{"id":7,"title":"title7,"description":"description7"}
]
我的网格由 7 个元素组成,有系统的 5 列和自适应行,例如:
如果我的查询 returns 例如 14 个元素,则布局应适应如下所示:
我能用代码得到的最接近的是。
<v-container class="mt-2">
<h1>Top Rated views</h1>
<v-row v-for="n in gridDivider" :key="n" class="n === 1 ? 'mb-6' : ''">
<v-col v-for="(item,index) in Items" :key="index">
<v-card class="mx-auto" max-width="300">
<v-img
class="white--text align-end"
height="200px"
src="item.avatar"
>
<v-card-title>anything as text</v-card-title>
</v-img>
<v-card-subtitle class="pb-0"> Number 10 </v-card-subtitle>
<v-card-text class="text--primary">
<div>Whitehaven Beach</div>
<div>Whitsunday Island, Whitsunday Islands</div>
</v-card-text>
</v-card>
</v-col>
</v-row>
</v-container>
感谢您的帮助
如果您以这种方式更改 v-row
和 v-col
声明,则可以完成此操作:
<v-row class="five-cols">
<v-col v-for="(item,index) in Items" :key="index">
...
并使用 CSS Grid Layouts:
创建 CSS class five-cols
.five-cols {
display: grid;
grid-template-columns: repeat(5, 1fr);
}
我有一个似乎很常见的问题,但我可以克服它。
我有一个 API 查询 returns 我有一个对象列表。
我想在我的页面上将其显示为充满内容的卡片网格。
我希望我的网格在 5 列中,行数将适应我列表中的元素数。
我知道怎么实现了。
例如:我有一个查询返回
items[
{"id":1,"title":"title1,"description":"description1"}
{"id":2,"title":"title2,"description":"description2"}
{"id":3,"title":"title3,"description":"description3"}
{"id":4,"title":"title4,"description":"description4"}
{"id":5,"title":"title5,"description":"description5"}
{"id":6,"title":"title6,"description":"description6"}
{"id":7,"title":"title7,"description":"description7"}
]
我的网格由 7 个元素组成,有系统的 5 列和自适应行,例如:
如果我的查询 returns 例如 14 个元素,则布局应适应如下所示:
我能用代码得到的最接近的是。
<v-container class="mt-2">
<h1>Top Rated views</h1>
<v-row v-for="n in gridDivider" :key="n" class="n === 1 ? 'mb-6' : ''">
<v-col v-for="(item,index) in Items" :key="index">
<v-card class="mx-auto" max-width="300">
<v-img
class="white--text align-end"
height="200px"
src="item.avatar"
>
<v-card-title>anything as text</v-card-title>
</v-img>
<v-card-subtitle class="pb-0"> Number 10 </v-card-subtitle>
<v-card-text class="text--primary">
<div>Whitehaven Beach</div>
<div>Whitsunday Island, Whitsunday Islands</div>
</v-card-text>
</v-card>
</v-col>
</v-row>
</v-container>
感谢您的帮助
如果您以这种方式更改 v-row
和 v-col
声明,则可以完成此操作:
<v-row class="five-cols">
<v-col v-for="(item,index) in Items" :key="index">
...
并使用 CSS Grid Layouts:
创建 CSS classfive-cols
.five-cols {
display: grid;
grid-template-columns: repeat(5, 1fr);
}