【发布时间】:2020-01-13 03:31:58
【问题描述】:
在 Vue 实例中,我有一个名为“block”的数组,其中包含 4 个值。我使用 v-for 将这个数组渲染到 DOM:
<div class="block" @click="shuffleArray()">
<div v-for="(number, index) in block">
<span :class="[`index--${index}`]">{{ number }}</span>
</div>
</div>
这会创建一个内部有 4 个跨度的 div,每个跨度都有一个类“index--0”、“index--1”等。
点击后,数组的值改变顺序:
shuffleArray: function() {
const shifted = this.block.shift();
this.block.push( shifted );
}
虽然值确实发生了变化,但它们并没有在实际的 DOM 中移动,我如何才能在单击时实现这一点,跨度实际上会在 DOM 中改变位置?每个跨度都应用了一个样式,所以我想要一个值确实改变顺序的视觉表示:
span.index--0 {
background-color: tomato;
}
span.index--1 {
background-color: khaki;
}
span.index--2 {
background-color:lavenderblush;
}
span.index--3 {
background-color: lightcoral;
}
也许有一个不需要 DOM 操作的纯 CSS 解决方案。
【问题讨论】:
标签: javascript css vue.js vuejs2 vue-component