【发布时间】:2017-12-04 15:46:47
【问题描述】:
在某些情况下如何禁用动画?
https://jsfiddle.net/4b3nxv7n/
<div id="flip-list-demo" class="demo" :class="{'animate': animate}">
<button v-on:click="shuffle">Shuffle</button>
<input type="checkbox" v-model="animate"/>
<transition-group name="flip-list" tag="ul">
<li v-for="item in items" v-bind:key="item">
{{ item }}
</li>
</transition-group>
</div>
new Vue({
el: '#flip-list-demo',
data: {
animate: true,
items: [1,2,3,4,5,6,7,8,9]
},
methods: {
shuffle: function () {
this.items = _.shuffle(this.items)
}
}
})
.animate .flip-list-move {
transition: transform 1s;
}
这是一个修改后的过渡组示例,带有用于切换动画的复选框。我在必要时使用 css 类来禁用动画。通常它工作正常,但有一个错误: 如果取消选中复选框,然后单击“随机播放”,然后选择复选框,动画仍然不起作用。 据我所知,使用 Chrome 开发工具转换类不适用于这种情况下的元素。
我尝试解决此问题的另一种方法是更改转换名称属性。但我有同样的错误。 https://jsfiddle.net/61vLtaxn/
<div id="flip-list-demo" class="demo">
<button v-on:click="shuffle">Shuffle</button>
<input type="checkbox" v-model="animate"/>
<transition-group :name="transitionName" tag="ul">
<li v-for="item in items" v-bind:key="item">
{{ item }}
</li>
</transition-group>
</div>
new Vue({
el: '#flip-list-demo',
data: {
animate: true,
items: [1,2,3,4,5,6,7,8,9]
},
computed: {
transitionName: function () {
return this.animate ? 'flip-list' : 'disabled-list'
}
},
methods: {
shuffle: function () {
this.items = _.shuffle(this.items)
}
}
})
.flip-list-move {
transition: transform 1s;
}
我对转换的理解有问题还是这是 vue 错误?
【问题讨论】:
-
它适用于 Mac/Chrome
-
@RoyJ 它在 Mac/Chrome 上对我不起作用。在做任何其他事情之前,请确保运行小提琴并按照步骤进行重现(这首先让我感到困惑)。 Grigory,我认为这是一个错误
-
你说得对:我在取消选中该框之前洗牌。如果你先洗牌,你可以检查和取消检查,洗牌按预期工作。如果您在洗牌之前取消选中,它将永远不会进行转换。
标签: javascript animation vue.js css-transitions vuejs2