【发布时间】:2021-10-31 07:14:09
【问题描述】:
我正在尝试构建一个容器,其中呈现的数组中的每个 3rd 元素都应该在一个 row 中。如果你点击一个元素,它应该单独消耗一行并且应该去12列,而其他列应该保持它的位置。请查看示例图片
如果我像下面的代码那样做,它显然不能按预期工作。
但是,如果认为主要问题是所有元素都在一行中。但即使我会在v-row 里面做 v-for,我猜也是不正确的。那么,如何在 v-for 中创建一个元素,仅针对每个第三个元素?这甚至可能吗?
如果没有,还有其他方法可以实现我的目标吗?在这里使用v-ifs 似乎不对。
我的代码:
<template>
<v-container fluid>
<v-row>
<v-col
class="border"
:cols="active == index ? 12 : 4"
@click="active = index"
v-for="(animal, index) in zoo"
:key="animal.name"
>
{{ animal.name }}
</v-col>
</v-row>
</v-container>
</template>
<script>
export default {
name: "Test",
components: {},
data: () => ({
active: -1,
zoo: [
{
name: "Lion",
},
{
name: "Tiger",
},
{
name: "Elefant",
},
{
name: "Bear",
},
{
name: "Monkey",
},
{
name: "Snake",
},
],
}),
};
</script>
<style>
.border {
border: solid black 1px;
}
</style>
这是硬编码的:
<template>
<v-container fluid>
<v-row>
<v-col class="border" :cols="4">
{{ zoo[0].name }}
</v-col>
<v-spacer></v-spacer>
<v-col class="border" :cols="4">
{{ zoo[2].name }}
</v-col>
</v-row>
<v-row>
<v-col class="border" :cols="12">
{{ zoo[1].name }}
</v-col>
</v-row>
<v-row>
<v-col class="border" :cols="4">
{{ zoo[3].name }}
</v-col>
<v-col class="border" :cols="4">
{{ zoo[4].name }}
</v-col>
<v-col class="border" :cols="4">
{{ zoo[5].name }}
</v-col>
</v-row>
</v-container>
</template>
<script>
export default {
name: "Test",
components: {},
data: () => ({
active: -1,
zoo: [
{
name: "Lion",
},
{
name: "Tiger",
},
{
name: "Elefant",
},
{
name: "Bear",
},
{
name: "Monkey",
},
{
name: "Snake",
},
],
}),
};
</script>
<style>
.border {
border: solid black 1px;
}
</style>
【问题讨论】:
标签: javascript vue.js