gpt4 book ai didi

css - 如何使用vue创建动态网格?

转载 作者:行者123 更新时间:2023-12-03 03:43:55 25 4
gpt4 key购买 nike

使用 Vue 动态创建网格的最佳方法是什么?

我正在考虑使用 v-for 循环在页面上生成 X 个“模块”的卡片,但希望将它们排列为 3 行。

例如

 Card | Card | Card
Card | Card | Card

最佳答案

您可以使用CSS grid layout ,请务必检查browser support .

我们需要使用 display: grid 使容器成为网格容器,并使用 grid-template-columns

您可以创建一个接受数字属性的组件,然后在 repeat() 表示法中使用它。

repeat({numberOfColumns}, minmax({minColumnSize}, {maxColumnSize}))

new Vue({
el: "#app",
data() {
return {
cards: [1, 2, 3, 4],
numberOfColumns: 3,
}
},
computed: {
gridStyle() {
return {
gridTemplateColumns: `repeat(${this.numberOfColumns}, minmax(100px, 1fr))`
}
},
},
methods: {
addCard() {
this.cards.push('new-card')
},
},
})

Vue.config.productionTip = false;
Vue.config.devtools = false;
.card-list {
display: grid;
grid-gap: 1em;
}

.card-item {
background-color: dodgerblue;
padding: 2em;
}

body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}

#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}

ul {
list-style-type: none;
}
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<div id="app">
Columns: <input v-model.number="numberOfColumns">
<ul :style="gridStyle" class="card-list">
<li v-for="(card, index) in cards" class="card-item">
{{ index + 1 }}
</li>
</ul>
<button @click="addCard">
Add card
</button>
</div>

关于css - 如何使用vue创建动态网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52067287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com