以下是一个使用Angular 2+的动画来为通过循环生成的单个复选框添加复选效果的示例代码:
input[type="checkbox"] {
opacity: 0;
}
input[type="checkbox"] + label {
position: relative;
cursor: pointer;
user-select: none;
}
input[type="checkbox"] + label:before {
content: "";
display: inline-block;
width: 20px;
height: 20px;
border: 2px solid #ccc;
border-radius: 4px;
margin-right: 5px;
position: absolute;
top: 2px;
left: 0;
transition: border-color 0.3s;
}
input[type="checkbox"]:checked + label:before {
border-color: #007bff;
}
input[type="checkbox"] + label:after {
content: "";
display: inline-block;
width: 8px;
height: 14px;
border-style: solid;
border-width: 0 2px 2px 0;
border-color: #007bff;
position: absolute;
top: 5px;
left: 5px;
transform: rotate(45deg);
transition: opacity 0.3s;
opacity: 0;
}
input[type="checkbox"]:checked + label:after {
opacity: 1;
}
import { Component } from '@angular/core';
import { trigger, state, style, animate, transition } from '@angular/animations';
@Component({
selector: 'app-checkboxes',
templateUrl: './checkboxes.component.html',
styleUrls: ['./checkboxes.component.css'],
animations: [
trigger('checkboxAnimation', [
state('true', style({ transform: 'scale(1.2)' })),
state('false', style({ transform: 'scale(1)' })),
transition('true <=> false', animate('300ms ease-in-out'))
])
]
})
export class CheckboxesComponent {
checkboxes = [
{ id: 'checkbox1', label: 'Checkbox 1', checked: false },
{ id: 'checkbox2', label: 'Checkbox 2', checked: false },
{ id: 'checkbox3', label: 'Checkbox 3', checked: false }
];
toggleAnimation(index: number) {
this.checkboxes[index].checked = !this.checkboxes[index].checked;
}
}
这样,当用户点击复选框时,它们会根据ngModel的值发生变化,并触发动画效果。