I有一个网站,我想做这样的事情,当我点击1,我希望这个元素的背景改变为白色,当我点击第二个第一个的背景将消失,并传递到下一个...我一直在尝试做这个很长一段时间,请帮助我我不知道如何做到这一点
<div class="oval">1</div> <div class="oval">2</div> <div class="oval">3</div>
xxls0lw81#
当我们需要使“某物”具有排他性时,我们使用一个唯一变量
selectedIndex:number=-1
如果不想取消选中
<div class="oval" [class.selected]="selectedIndex==0" (click)="selectedIndex=0"> 1 </div> <div class="oval" [class.selected]="selectedIndex==1" (click)="selectedIndex=1"> 2 </div> <div class="oval" [class.selected]="selectedIndex==2" (click)="selectedIndex=2"> 3 </div>
如果你想取消选择
<div class="oval" [class.selected]="selectedIndex==0" (click)="selectedIndex=selectedIndex==0?-1:0"> 1 </div> <div class="oval" [class.selected]="selectedIndex==1" (click)="selectedIndex=selectedIndex==1?-1:1"> 2 </div> <div class="oval" [class.selected]="selectedIndex==2" (click)="selectedIndex=selectedIndex==2?-1:2"> 3 </div>
注意:我使用[class.selected],因此我们使用.css
.selected{ background:red; }
您可以使用(condition)?value:null来使用style.background或style.background-color,例如,用于第一个div
(condition)?value:null
[style.background]="selectedIndex==0?'red':null
5tmbdcev2#
就像@Kwright02的评论一样,你可以用css来做:
.myclass:focus { background-color: green; }
但重要的是:元素必须是可聚焦的。所以div不是,按钮就是这样。第二种方法(添加单击处理程序并直接更改背景):
// HTML <div (click)="onClick($event)">test</div> // Code onClick(event: any) { event.target.style["background-color"] = "green"; }
注意:这不是Angular* 中的方法。这里使用属性绑定并将样式绑定到条件作为示例。
您可以像这样使用Angular的HostListener,而不是向每个控件添加一个click侦听器:
HostListener
@HostListener("document:click", ["$event"]) onAllClick(event: any) { event.target.style["background-color"] = "green"; }
2条答案
按热度按时间xxls0lw81#
当我们需要使“某物”具有排他性时,我们使用一个唯一变量
如果不想取消选中
如果你想取消选择
注意:我使用[class.selected],因此我们使用.css
您可以使用
(condition)?value:null
来使用style.background或style.background-color,例如,用于第一个div5tmbdcev2#
就像@Kwright02的评论一样,你可以用css来做:
但重要的是:元素必须是可聚焦的。所以div不是,按钮就是这样。
第二种方法(添加单击处理程序并直接更改背景):
注意:这不是Angular* 中的方法。这里使用属性绑定并将样式绑定到条件作为示例。
您可以像这样使用Angular的
HostListener
,而不是向每个控件添加一个click侦听器: