用vue写出一个按钮匹配一个勾选框,写四行。第一行延时0.1秒触发。第二行0.2秒依次类推。然后有个开始按钮。勾选后按钮后。比如勾选了第一行。第三行。分别在每0.1秒点击下第一行按钮。每0.3秒点击下第三行按钮,并增加点击动画。开始按钮点击后变成停止按钮并变色
时间: 2023-08-23 08:04:53 浏览: 142
以下是代码实现:
```html
<template>
<div>
<button @click="start" :class="{stop: isStarted}">{{ buttonText }}</button>
<div v-for="(item, index) in items" :key="index">
<input type="checkbox" v-model="item.checked">
<button :class="{clicked: item.clicked}" :disabled="!isStarted || !item.checked" @click="clickButton(index)">{{ `Button ${index + 1}` }}</button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
items: [
{ checked: false, clicked: false },
{ checked: false, clicked: false },
{ checked: false, clicked: false },
{ checked: false, clicked: false },
],
isStarted: false,
buttonText: 'Start',
};
},
methods: {
start() {
this.isStarted = !this.isStarted;
this.buttonText = this.isStarted ? 'Stop' : 'Start';
if (this.isStarted) {
for (let i = 0; i < this.items.length; i++) {
setTimeout(() => {
this.clickButton(i);
}, (i + 1) * 100);
}
}
},
clickButton(index) {
this.items[index].clicked = true;
setTimeout(() => {
this.items[index].clicked = false;
}, 300);
},
},
};
</script>
<style scoped>
button.stop {
background-color: red;
color: white;
}
button.clicked {
animation: click-animation 0.3s;
}
@keyframes click-animation {
0% {
transform: scale(1);
}
50% {
transform: scale(1.2);
}
100% {
transform: scale(1);
}
}
</style>
```
这里使用了 Vue.js 框架实现了一个由多个按钮和勾选框组成的列表,点击开始按钮后会依次点击被勾选的按钮并加上点击动画,点击停止按钮则停止点击操作。其中勾选框和按钮的状态都保存在数据中,通过 v-model 和 :class 绑定到相应的标签上。
代码中的动画效果使用了 CSS3 的 animation 属性实现,当按钮被点击时会加上一段缩放动画。
阅读全文