我是一名初级程序员,最近开始学习 Angular 4。我正在尝试制作个人网站并想添加一些动画。
在页面的顶部,我有一个带有徽标的大屏幕。我希望这样当我单击此徽标时,主体的背景颜色会发生变化,但似乎该功能会触发元素。
这是我在 TypeScript 上的代码:(代码不会产生错误。它只是没有做我打算做的事情。)
@Component({
selector: 'main-jumbotron',
templateUrl: './jumbotron.component.html',
styleUrls: ['./jumbotron.component.css'],
animations: [
trigger("changeBodyColor", [
state('off', style({
backgroundColor: '#CCFFCC'
})),
state('on', style({
backgroundColor: '#3A3A38'
})),
transition('off => on', [animate('2s')]),
transition('on => off', [animate('2s')])
])
]
})
export class JumbotronComponent implements OnInit {
// other private instance data, constructor here, ngOnInit etc.
colorState: string = 'off';
toggleColor() {
console.log('triggered ' + this.colorState);
this.colorState = (this.colorState === 'off') ? 'on' : 'off';
}
}
当我将 [@changeBodyColor]="colorState" 放在 jumbotron 的 div 元素中时,动画可以工作,但显然只是改变了 jumbotron 背景颜色。当我将它放在 index.html 中的 body 元素上时,会触发该功能(登录控制台),但颜色不会改变。
我觉得这是 DOM 层次结构的问题。如果有人知道问题可能是什么,请告诉我!