【发布时间】:2021-11-01 08:02:56
【问题描述】:
我是 Vue 的新手,对于这个项目,我试图在每行显示 2 个玩家作为一个 div。我在 playerDiv id 上使用display: grid; CSS 解决了这个问题。问题是我现在遇到的问题是它在第一行、第二行和第三行之间造成了巨大的差距。有没有办法消除每行之间的差距?
我将高度用作440px 用于playerDiv 和30px 用于eachPlayerDiv。我无法改变这一点,因为有时 todos 上的数据库值可能只有 2 名玩家或 12 名玩家。有没有办法在不改变我定义的高度的情况下解决这个间隙问题?
目前显示为
Player 1 Player 2
Player 3 Player 4
Player 5 Player 6
有没有办法将玩家显示为
Player 1 Player 2
Player 3 Player 4
Player 5 Player 6
JsFiddle 链接 = https://jsfiddle.net/ujjumaki/f0js3pLa/25/
查看
<div id="app">
<div id="playerDiv">
<div v-for="element in todos" class="eachPlayerDiv">
{{element.text}}
</div>
</div>
</div>
<style>
#playerDiv{
height:440px;
background-color: white;
display: grid;
grid-template-columns: 1fr 1fr;
background-color:red;
}
.eachPlayerDiv{
border-style:solid;
background-color:yellow;
height: 30px;
}
</style>
方法
new Vue({
el: "#app",
data: {
todos: [
{ text: "David", id: 1 },
{ text: "John", id: 2 },
{ text: "Alek", id: 3 },
{ text: "Joshua", id: 4},
{ text: "Jonny", id: 5},
{ text :"Sam", id:6}
]
},
methods: {
toggle: function(todo){
todo.done = !todo.done
}
}
})
【问题讨论】:
-
只需将行高定义为 30px 并使用 flexbox 将整个网格居中。
标签: javascript css twitter-bootstrap vue.js