Zet*_*eth 10 css vue.js vuejs2
我很抱歉发布此消息,因为我可以看到许多与此类似的问题已被问过多次。以下是那些几乎帮助我的人 - 以及为什么他们没有:
v-if
在模板标签上写上。就我而言,这似乎很愚蠢,因为这两个模板 98% 相同。我有一个从 API 中提取的项目列表,因此数量会发生变化。我希望它们显示在两列中:
-----------------
| Item1 Item5 |
| Item2 Item6 |
| Item3 Item7 |
| Item4 |
-----------------
Run Code Online (Sandbox Code Playgroud)
我正在使用循环遍历它们v-for
。
display: flex
但这只能做到这一点:
-----------------
| Item1 Item2 |
| Item3 Item4 |
| Item5 Item6 |
| Item7 |
-----------------
Run Code Online (Sandbox Code Playgroud)
column-count: 2;
但是,列中间元素,问候display: block; overflow: hidden;
和许多其他尝试的中断。应该说,这些元素的高度可以变化。
如果是php
,那么我只会做这样的事情:
<?php
if( $index == count( $items)/2 ):
echo '</div>';
echo '</div>';
echo '<div class="col-md-6">';
echo '<div class="item-container">';
endif;
?>
Run Code Online (Sandbox Code Playgroud)
......但事实并非如此。我正在寻找 vue-alternative。我试过这个:
{{#if key === Number( items.length / 2 ) }}
</div>
</div>
<div class="col-md-6">
<div class="item-container">
{{/if}
Run Code Online (Sandbox Code Playgroud)
但它不起作用。据我所知,这不是这样做的“vue 方式”。但我无法弄清楚是什么。:-/
有没有这样的东西?
<div class="col-md-12">
<div class="items-container">
<div class="item-container" v-for="item, key in items['data']">
<!-- A BUNCH OF ITEM-INFO -->
</div><!-- /.item-container -->
</div><!-- /.items-container -->
</div><!-- /.col-md-12 -->
Run Code Online (Sandbox Code Playgroud)
Phi*_*hil 10
我要做的是创建一个计算属性,将项目数组划分(或分块)为适当数量的列。
这是一个使用 flexbox 布局和一个额外列元素的示例。
new Vue({
el: 'main',
data: {
items: ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5', 'Item 6', 'Item 7'],
cols: 2
},
computed: {
columns () {
let columns = []
let mid = Math.ceil(this.items.length / this.cols)
for (let col = 0; col < this.cols; col++) {
columns.push(this.items.slice(col * mid, col * mid + mid))
}
return columns
}
}
})
Run Code Online (Sandbox Code Playgroud)
.container {
display: flex;
border: 1px solid;
}
.col {
margin: 10px;
border: 1px solid;
flex-grow: 1;
display: flex;
flex-direction: column;
}
.item-container {
border: 1px solid;
padding: 5px;
margin: 5px;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.min.js"></script>
<main>
<p><label>Columns:<label> <input type="number" v-model="cols"></p>
<div class="container">
<div class="col" v-for="column in columns">
<div class="item-container" v-for="item in column">{{item}}</div>
</div>
</div>
</main>
Run Code Online (Sandbox Code Playgroud)
如果您想要一种不那么冗长的方法来分块 items 数组,请参阅将数组拆分为块
归档时间: |
|
查看次数: |
9566 次 |
最近记录: |