以下是一个使用Angular Material的拖放功能来同步不同部分的动画的示例代码:
npm install @angular/material @angular/cdk
import { DragDropModule } from '@angular/cdk/drag-drop';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@NgModule({
imports: [
BrowserAnimationsModule,
DragDropModule
]
})
{{item}}
{{item}}
import { moveItemInArray, transferArrayItem, CdkDragDrop } from '@angular/cdk/drag-drop';
@Component({
// ...
})
export class MyComponent {
items = ['Item 1', 'Item 2', 'Item 3'];
targetItems = [];
onDrop(event: CdkDragDrop) {
if (event.previousContainer === event.container) {
// 在同一个容器内拖动
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
} else {
// 在不同的容器之间拖动
transferArrayItem(event.previousContainer.data,
event.container.data,
event.previousIndex,
event.currentIndex);
}
// 在拖放完成后执行动画
const sourceElement = document.getElementById('source');
const targetElement = document.getElementById('target');
sourceElement.classList.add('animate');
targetElement.classList.add('animate');
setTimeout(() => {
sourceElement.classList.remove('animate');
targetElement.classList.remove('animate');
}, 500); // 动画持续时间
}
}
.animate {
transition: background-color 0.5s;
}
#source.animate {
background-color: green;
}
#target.animate {
background-color: blue;
}
现在,当您在源容器和目标容器之间拖动项目时,它们将同步进行动画效果。